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语句,从而引起编译错误。

标签:Java,if
0
投稿

猜你喜欢

  • 详解Android MVP开发模式

    2022-04-13 08:30:43
  • Android实现点击图片上传SQLite数据库

    2021-06-23 04:35:50
  • springmvc后台基于@ModelAttribute获取表单提交的数据

    2023-08-05 12:29:35
  • WPF实现环(圆)形菜单的示例代码

    2022-05-07 18:46:34
  • C#多线程系列之线程通知

    2023-09-13 17:08:03
  • 基于SpringCloudGateway实现微服务网关的方式

    2021-12-02 04:33:04
  • java爬虫Jsoup主要类及功能使用详解

    2023-09-26 18:02:25
  • Android实现ListView数据动态加载的方法

    2021-11-02 23:01:02
  • java线程之join方法的使用介绍

    2023-01-15 12:18:40
  • Android系统设置中的清除数据会清除哪些数据?

    2022-09-04 04:48:13
  • Winform控件优化之圆角按钮1

    2021-05-31 20:15:36
  • Android自定义带圆角的ImageView

    2022-12-12 23:48:07
  • Android创建与解析XML(二)——详解Dom方式

    2023-08-20 02:30:05
  • Android动态加载布局实现技巧介绍

    2022-03-06 13:31:48
  • C#文件操作的简单实例

    2021-12-14 16:50:40
  • C#使用Process类调用外部exe程序

    2023-02-12 16:54:20
  • intellij idea创建第一个动态web项目的步骤方法

    2023-04-16 15:47:20
  • Ubuntu16.04下配置VScode的C/C++开发环境

    2023-10-22 19:21:17
  • springboot使用IDEA远程Debug

    2021-12-13 06:40:35
  • Android应用程序的编译流程及使用Ant编译项目的攻略

    2022-09-18 18:22:16
  • asp之家 软件编程 m.aspxhome.com