Java编程中的条件判断之if语句的用法详解
作者:goldensun 发布时间:2022-11-27 14:14:36
if语句使用布尔表达式或布尔值作为分支条件来进行分支控制,其中if语句有如下三种形式:
第一种形式:
if ( logic expression )
{
statements…
}
第二种形式:
if (logic expression)
{
statements…
}
else
{
statements…
}
第三种形式:
if (logic expression)
{
statements…
}
else if(logic expression)
{
statements…
}
…//可以有零个或多个else if语句
else//最后的else语句也可以省略
{
statement
}
在上面if语言的三种形式中,放在if之后的括号里的只能是一个逻辑表达式,即这个表达式的返回值只能是true或false.第二种情形和第三种情形是相通的,如果第三种形式中else if块不出现,则变成了第二种形式。
上面的条件语句中,if(logic expression)、else if(logic expression)以及else后花括号括起来多行代码被称为代码块,一个代码块通常被当成一个整体来执行(除非运行过程中遇到return、break、continue等关键字,或者遇到了异常),因此这个代码块也被称为条件执行体。例如如下程序:
程序清单:codes/04/4-2/TestIf.java
public class TestIf
{
public static void main(String[] args)
{
int age = 30;
if (age > 20)
//只有当age > 20时,下面花括号括起来的语句块才会执行
//花括号括起来的语句是一个整体,要么一起执行,要么一起不会执行
{
System.out.println("年龄已经大于20岁了");
System.out.println("20岁以上的人应该学会承担责任…");
}
}
}
因此,如果if(logic expression)、else if(logic expression)和else后的语句块只有一行语句时,则可以省略花括号,因为单行语句本身就是一个整体,无须花括号来把它们定义成一个整体。下面代码完全可以正常执行(程序清单同上):
//定义变量a ,并为其赋值
int a = 5;
if (a > 4)
//如果a>4,执行下面的执行体,只有一行代码作为代码块
System.out.println("a大于4");
else
//否则,执行下面的执行体,只有一行代码作为代码块
System.out.println("a不大于4");
通常,我们建议不要省略if、else、else if后执行块的花括号,即使条件执行体只有一行代码,因为保留花括号会有更好的可读性,而且保留花括号会减少发生错误的可能,例如如下代码,则不可正常执行:
//定义变量b ,并为其赋值
int b = 5;
if (b > 4)
//如果b>4,执行下面的执行体,只有一行代码作为代码块
System.out.println("b大于4");
else
//否则,执行下面的执行体
b--;
//对于下面代码而言,它已经不再是条件执行体的一部分,因此总会执行
System.out.println("b不大于4");
上面代码中以粗体字标识的代码行:System.out.println("b不大于4");,将总是会执行,因为这行代码并不属于else后的条件执行体,else后的条件执行体就是b--;这行代码。
if、else、else if后条件执行体要么是一个花括号扩起来的语句块,则这个语句块整体作为条件执行体;要么是以分号为结束符的一行语句,甚至可能是一个空语句(空语句是一个分号)。
如果if块后有多条语句作为条件执行体,如果省略了这个条件执行体的花括号,则会引起编译错误,看下面代码(程序清单同上):
//定义变量c ,并为其赋值
int c = 5;
if (c > 4)
//如果c>4,执行下面的执行体,将只有c--;一行代码为条件执行体
c--;
//下面是一行普通代码,不属于条件执行体
System.out.println("c大于4");
//此处的else将没有if语句,因此编译出错
else
//否则,执行下面的执行体,只有一行代码作为代码块
System.out.println("c不大于4");
在上面代码中,因为if后的条件执行体省略了花括号,则系统只把c--;一行代码作为条件执行体,当c-;语句结束后,if语句也就结束了。后面的System.out.println("c大于4");代码已经是一行普通代码了,不再属于条件执行体,从而导致else语句没有if语句,从而引起编译错误。


猜你喜欢
- 目录1. 前言2. 栈帧3. 分析4. 总结1. 前言在刚开始学习Java的时候,大家肯定都接触过this关键字,尤其是在构造函数赋值的时候
- C++的函数指针(function pointer)是通过指向函数的指针间接调用函数。相信很多人对指向一般函数的函数指针使用的比较多,而对指
- 有时候在配置中心有些参数是需要修改的,这时候如何不重启而达到实时生效的效果呢?添加依赖<dependencies>
- 要实现PPT转图片,首先需要引用两个DLL。我这里用的这个这个版本Microsoft.Office.Interop.PowerPoint 1
- 本文实例讲述了C#使用xsd文件验证XML格式是否正确的实现方法。分享给大家供大家参考,具体如下://创建xmlDocumentXmlDoc
- 1 C++类型转换本质1.1 自动类型转换(隐式)利用编译器内置的转换规则,或者用户自定义的转换构造函数以及类型转换函数(这些都可以认为是已
- persistence.xml配置文件修改存放路径今天整合Spring、struts2和Spring Data JPA的时候遇到以下问题,现
- 本文核心为分层领域模型(VO , PO , BO, DAO ,POJO等)概念的个人理解。1.为什么出现分层领域模型这个东西?(1)解决MV
- vs2010测试通过,主要思想是由出生日期和当前日期,两个日期计算出年龄(岁、月、天)using System;using System.C
- 安装jdk(介绍三种方法)查看java版本:java -version方法一:利用yum源来安装jdk(此方法不需要配置环境变量)查看yum
- 本文实例讲述了Android编程实现动态支持多语言的方法。分享给大家供大家参考,具体如下:资源文件values/strings.xml中添加
- 1.理解全过程1.1.概述需要具备的知识Socket网络编程反向代理的理解平滑加权轮询算法的理解线程池的理解目的:实现Socket 集群服务
- 1.aar包是android studio下打包android工程中src、res、lib后生成的aar文件,aar包导入其他android
- Android自定义短信验证码组件,供大家参考,具体内容如下效果图1.布局实现因为要禁用光标,所以我用TextView代替了EditText
- 根据数据库表名生成实体类公司用的jpa,没有用mybatis。所以也没有用mybatis自动生成。但有些数据库表字段太多,就想着一劳永逸了,
- 文章按照 Socket 的 创建、连接、传输数据、释放资源的过程来写。给出方法、参数的详细信息。一,网络基础说到 Socket,需要学习一下
- 一、准备java我已经把java装到了在D盘:二、配置java环境变量点击设置,进入windows设置页面;搜索高级系统设置:在系统变量里添
- 本文实例讲述了Java数组队列概念与用法。分享给大家供大家参考,具体如下:一.队列的概念 (1)队列也是一种线性结构(2)相比数组
- Prim算法介绍1.点睛在生成树的过程中,把已经在生成树中的节点看作一个集合,把剩下的节点看作另外一个集合,从连接两个集合的边中选择一条权值
- LeetCode54. 螺旋矩阵 java实现题目难度 中给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,