热门标签 | 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实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • 本文介绍了在Java中gt、gtgt、gtgtgt和lt之间的区别。通过解释符号的含义和使用例子,帮助读者理解这些符号在二进制表示和移位操作中的作用。同时,文章还提到了负数的补码表示和移位操作的限制。 ... [详细]
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社区 版权所有