热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

流程控制分支结构

Java提供了两种常见的分支控制结构,if语句和switch语句。其中if语句使用boolean表达式或boolean值作为分支条件来进行分支控制,而switch语句则用于


Java提供了两种常见的分支控制结构,if语句和switch语句。

其中if语句使用boolean表达式或boolean值作为分支条件来进行分支控制

switch语句则用于对多个整形值进行匹配,从而实现分支控制


if条件语句

if语句使用boolean表达式或boolean值作为分支条件来进行分支控制。具体有如下3种形式:

1),if(){}

2),if(){}else{}

3),if(){}else if(){}else{}

如果if,else if,else后的代码块只有一行语句时,则可以省略花括号,因为单行语句本身就是一个整体,无须用花括号来把他们定义成一个整体。

注意:if,else,else if后的条件执行体要么是一个花括号括起来的代码块,则这个代码块整体作为条件执行体,要么是以分号为结束符的一行语句,甚至可能是一个空语句。

空语句就是一个分号,那么就只是这条语句作为条件执行体。如果省略了if条件后条件执行体的花括号,那么if条件只控制到紧跟该条件语句的第一个分号处。

使用if语句个人建议:

1),就我个人编码风格来说,我不建议省略花括号,即使执行体只有一条语句

2),使用if...else语句时,一定要先处理包含范围更小的情况,一定要先处理经常会发生的分支

对于任何的if else语句,表面上看起来,else后没有任何条件,这是错误的想法,else的含义是“否则”,else本身就是一个条件。else的隐含条件就是对前面条件取反

public static void main(String[] args)
	{
		// 下面的代码控制台永远输出-->这个分支屏蔽了下面所有的分支了呢
		int age = 50;
		if (age > 10)
		{
			System.out.println("这个分支屏蔽了下面所有的分支了呢");
		}
		else if (age > 30)
		{
			System.out.println("这个分支永远不会被执行,永远永远");
		}
	}



switch分支语句

switch语句由一个控制表达式和多个case标签组成,和if语句不同的是,switch语句后面的控制表达式的数据类型只能是byte,short,char,int四种整数类型,枚举类型和

Java.lang.String类型,不能是boolean类型。

switch语句后面的控制表达式支持字符串类型,是从Java7开始的,建议使用Java8,Java8是Java在5之后的另外一个里程碑版本。

switch语句往往需要在case标签后紧跟一个代码块,case标签作为这个代码块的标识。switch语句的语法格式如下:

switch(expression)
{
	case condition1:
	{
		statement(s1)
		break;
	}
	case condition2:
	{
		statement(s2)
		break;
	}
	...
	case conditionN:
	{
		statement(sN)
		break;
	}
	default:
	{
		statement(s)
	}
}

switch语句中最后的default,意思就是表达式的值和前面所有的case中表达式的值都不相同。举个例子:

public static void main(String[] args)
	{
		String season = "夏天";
		switch (season)
		{
		case "春天":
		{
			System.out.println("这里是春天吆");
			break;
		}
		case "夏天":
		{
			System.out.println("这里是夏天吆");
			break;
		}
		default:
		{
			System.out.println("只能是秋天或者冬天啦");
		}
		}
	}

使用switch语句时,有两个值得注意的地方:

1),switch语句后的表达式的数据类型只能是byte,short,int,char4种整数类型,String和枚举类型

2),如果省略了case后代码块的break,将引入一个陷阱。因为这个限制,我平时很少使用switch语句,建议大家也最好别多使用,用if+else足够

public static void main(String[] args)
	{
		// 下面的代码演示,代码执行块中少了break的编码陷阱。
		// 第一个case之后所有的分支都会被执行,不建议多使用switch语句
		String season = "LinkinPark";
		switch (season)
		{
		case "NightWish":
		{
			System.out.println("这里的语句不会被执行");
		}
		case "LinkinPark":
		{
			System.out.println("这里的语句会被执行");
		}
		default:
		{
			System.out.println("这里的语句也会被执行");
		}
		}
	}



流程控制--分支结构


推荐阅读
  • 本文介绍了如何通过Java代码计算一个整数的位数,并展示了多个基础编程示例,包括求和、平均分计算、条件判断等。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本篇文章介绍如何将两个分别表示整数的链表进行相加,并生成一个新的链表。每个链表节点包含0到9的数值,如9-3-7和6-3相加得到1-0-0-0。通过反向处理链表、逐位相加并处理进位,最终再将结果链表反向,即可完成计算。 ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
  • 如何清除Chrome浏览器地址栏的特定历史记录
    在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 本文探讨了在构建应用程序时,如何对不同类型的数据进行结构化设计。主要分为三类:全局配置、用户个人设置和用户关系链。每种类型的数据都有其独特的用途和应用场景,合理规划这些数据结构有助于提升用户体验和系统的可维护性。 ... [详细]
  • 本文详细介绍如何在 iOS 7 环境下申请苹果开发者账号,涵盖从访问开发者网站到最终激活账号的完整流程。包括选择个人或企业账号类型、付款方式及注意事项等。 ... [详细]
  • CentOS 系统管理基础
    本文介绍了如何在 CentOS 中查询系统版本、内核版本、位数以及磁盘分区的相关知识。通过这些命令,用户可以快速了解系统的配置和磁盘结构。 ... [详细]
  • 本文详细探讨了 PHP 中 method_exists() 和 is_callable() 函数的区别,帮助开发者更好地理解和使用这两个函数。文章不仅解释了它们的功能差异,还提供了代码示例和应用场景的分析。 ... [详细]
author-avatar
网赚交流大厅算_817
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有