Java- if语句

if语句

一、if语句的语法结构和运行原理

if语句是分支语句,也可以叫做条件语句。
第一种写法:

​ if(布尔表达式){

​ java语句;//分支

}

这里的大括号{}叫做一个分支

该语法的执行原理:

​ 如果布尔表达式的结果为true,执行大括号中的程序,否则大括号中的代码不执行。

注意:

(布尔表达式)中的布尔表达式必须得是布尔类型,例如不能为a=b,这种是赋值,"=="是关系运算符,才是表示等于。

关系运算符:>,>=,<,<=,!=,== 运算出来的结果都是布尔值。true or false。


第二种写法:

​ if(布尔表达式){ //分支1

​ java语句1;

}else{ //分支2

​ java语句2;

}

执行原理:

如果布尔表达式的结果为true,则执行分支1,分支2不执行;如果结果为false,分支1不执行,分支2执行。

以上这个语句可以保证一定会有一个分支执行!


第三种写法:

​ if(布尔表达式1){ //分支1

​ java语句1;

}else if(布尔表达式2){ //分支2

​ java语句2;

}

else if(布尔表达式3){ //分支3

​ java语句3;

}

执行原理:

先判断布尔表达式1,如果布尔表达式1结果为true,则执行分支1,其他分支不执行,整个if语句结束。

如果布尔表达式1结果为false的时候,继续判断布尔表达式2的结果,如果布尔表达式2的结果为true,则执行分支2,其他分支不执行,包括分支1,整个if语句结束。

……

从上往下依次判断,主要看第一个true发生在哪个分支上。第一个true对应的分支执行,if语句结束。


第四种写法:

if(布尔表达式1){ //分支1

​ java语句1;

}else if(布尔表达式2){ //分支2

​ java语句2;

}

else if(布尔表达式3){ //分支3

​ java语句3;

}else{

​ java语句4;//以上条件没有一个成立的,则执行这个else。

}


注意:
  1. 对于if语句来说,在任何情况下只能有一个分支执行,不可能存在2个或者更多分支同时执行。if语句只要有一个分支执行了,整个if语句结束。(if语句里嵌套一个if语句,这两个if语句是相对独立的。)

  2. 以上四种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行,以上四种当中,第一种和第三种没有else分支,这样的语句可能会导致最后一个语句都不执行。第二种和第四种,一定会有一个分支执行。

  3. 大括号中当分支语句中,java语句大括号可以省略,为了代码可读性,一般不省略。

  4. 控制语句与控制语句间可以嵌套,嵌套时,一个一个语句的分析,不要所有语句一起冗杂分析。

    二、if语句的嵌套

    if( ){

    ​ if( ){

    ​ 分析的时候将里面的if语句看成一个java语句,只有外面if语句执行了,才会执行里面的if语句。

    ​ 无论if语句里面嵌套了什么控制语句,都一个一个的来分析。

    ​ }

    }

    案例一:

    public class IfTest(){
    	public static void main(String[] args){
    		//定义了一个布尔类型的表量,表示性别。
            boolean sex = true;
            //当sex为true时表示男,为false时,表示女。
            
            if( sex ){ //这里的sex已经是布尔类型了,写sex == true,代码也执行无误,但是多此一举。
            	System.out.println("男");
            }else{
           		System.out.println("女");
            }
            
            
            //也可以直接用三目运算符
            // sex = false;
            //System.out.println(sex ? "男":"女");
            
            //看看代码是否可以这样写?
            //小括号中最终取的是sex的值。
       
            if(sex = true){
           		 System.out.println("男");
            }else{
           		System.out.println("女");
            }
            /*这段代码也可以成功运行,但是只会运行if语句里的代码,else已经没有存在意义,原因是在if语句里"="表示赋值,在此时已			经将sex的值赋值为 true了。就算在if语句前定义  sex = false; 也不会更改结果*/
    	}
    }
    
    

    案例二

    业务要求:

    1. 从键盘上接收一个人的年龄。

    2. 年龄要求为0-150,其他值表示非法,需要提示非法信息。

    3. 根据人的年龄来动态地判断这个人属于生命的哪个阶段?

      【0-5】婴幼儿

      【6-10】少儿

      【11-18】少年

      【19-35】青年

      【36-55】中年

      【56-150】老年

      package com.cooler.Base;
      
      import java.util.Scanner;//导入Scanner类
      
      public class IfTest01 {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);//接收一个年龄
              System.out.println("请输入年龄:");
              int age = sc.nextInt(); //定义一个变量存放键盘输入的值。
              if (age < 0 || age > 150) {
                  System.out.println("非法输入,请重新输入!");
              } else {
                  /*能够走到这个分支当中,说明年龄合法!
                    可以进一步使用嵌套。
                    if(age <= 5 && age >= 0){}相对来说比较啰嗦。
                  */
                  if (age <= 5) {
                      System.out.println("婴幼儿");
                  } else if (age <= 10) {
                      System.out.println("少儿");
                  } else if (age <= 18) {
                      System.out.println("少年");
                  } else if (age <= 35) {
                      System.out.println("青年");
                  } else if (age <= 55) {
                      System.out.println("中年");
                  } else {
                      System.out.println("老年");
                  }
              }
          }
      }
      

      也可以采用不嵌套的方式。

      package com.cooler.Base;
      
      import java.util.Scanner;
      
      public class IfTest01 {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              System.out.println("请输入年龄:");
              int age = sc.nextInt();
               if (age < 0 || age > 150) {
                  System.out.println("非法输入,请重新输入!");
              } else if (age <= 5) {
                      System.out.println("婴幼儿");
                  } else if (age <= 10) {
                      System.out.println("少儿");
                  } else if (age <= 18) {
                      System.out.println("少年");
                  } else if (age <= 35) {
                      System.out.println("青年");
                  } else if (age <= 55) {
                      System.out.println("中年");
                  } else {
                      System.out.println("老年");
                  }
              }
          }
      
      

      改良一下:

      package com.cooler.Base;
      
      import java.util.Scanner;
      
      public class IfTest01 {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              System.out.println("请输入年龄:");
              int age = sc.nextInt();
              String str = "老年";//定义一个字符串为老年。
               if (age < 0 || age > 150) {
                  System.out.println("非法输入,请重新输入!");
              } else if (age <= 5) {
                      str = "婴幼儿";
                  } else if (age <= 10) {
                      str = "少儿";
                  } else if (age <= 18) {
                      str = "少年";
                  } else if (age <= 35) {
                      str = "青年";
                  } else if (age <= 55) {
                     str = "中年";
                  } 
                   System.out.println(str);
              }
          }
      
      
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值