Java开发笔记(十六)非此即彼的条件分支
2018-10-29 15:32:57来源:博客园 阅读 ()
前面花了大量篇幅介绍布尔类型及相应的关系运算和逻辑运算,那可不仅仅是为了求真值或假值,更是为了通过布尔值控制流程的走向。在现实生活中,常常需要在岔路口抉择走去何方,往南还是往北,向东还是向西?在Java编程中,利用if语句可判断接下来要做什么,比如说:如果某个条件成立,就进行某种处理;否则的话,就进行另一种处理。if语句的具体格式为“if (条件) { /* 条件成立时的操作代码 */ } else { /* 条件不成立时的操作代码 */ }”,其中后面的else分支是可选的,下面是个if判断的简单代码示例:
System.out.println("凉风有信,秋月无边。打二字"); System.out.println("获取“凉风有信”的谜底请按1,获取“秋月无边”的谜底请按2"); Scanner scan = new Scanner(System.in); // 从控制台接收输入文本 /* nextLine方法表示接收一行文字,以回车键结尾 */ int seq = scan.nextInt(); if (seq == 1) { // 按1时打印“凉风有信”的谜底 System.out.println("凉风有信的谜底是“讽”"); } if (seq == 2) { // 按2时打印“秋月无边”的谜底 System.out.println("秋月无边的谜底是“二”"); }
上面的代码例子,目的是根据输入的数字来显示对应的谜底,当输入数字1时,日志打印“凉风有信”的谜底;当输入数字2时,日志打印“秋月无边”的谜底。然而要是输入其它数字,可就啥都没打印,这样未免太严格了,不如对于所有非1的数字,都自动转成数字2得了。此时else分支派上用场了,凡是非1的数字,自动默认变为数字2。于是,补充了自动转换数字的赋值代码如下所示:
if (seq == 1) { seq = 1; } else { seq = 2; }
以上的赋值转换代码,虽然实现的功能很简单,但是足足占用了五行代码,着实拖泥带水。仔细分析它的代码逻辑,其实包括了三个要素,其一为判断条件,其二为条件满足时的赋值,其三为条件不满足时的赋值,因而Java引入了新的三元运算符“?:”加以优化。该运算符的完整形式为“式子A?式子B:式子C”,当式子A成立时,运算结果为B,否则运算结果为C。如此一来,先前的数值转换代码可以改写成下面这样:
// A?B:C里的问号加冒号构成了一个三元运算符,当式子A成立时,运算结果为B,否则(式子A不成立)结果为C seq = seq==1?1:2; // 等价于 seq = (seq==1)?1:2
改写后的代码仅有一行而已,尽管未出现if和else的身影,但它仍是一种从条件语句简化来的条件运算符。
当然,运算符“?:”最终是为了得到条件判断的运算结果,倘若业务逻辑并不要求返回什么数值,而是要求执行某项动作(比如打印日志),那么这个三元运算符便不再使用了。例如,前面的文字猜谜游戏,假设不需要对变量seq进行数值转换,而是发现非1数字时直接打印“秋月无边”的谜底,则应当书写完整的if/else语句,不可也无法再套用运算符“?:”。此时修改后的代码就变成下面这样了:
if (seq == 1) { // 条件式子为真时,进入if分支处理 System.out.println("凉风有信的谜底是“讽”"); } else { // 否则(条件式子为假),进入else分支处理 System.out.println("秋月无边的谜底是“二”"); }
所以,三元运算符“?:”仅适用于需要返回计算结果的场合。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash