Java语言学习04——控制语句(循环、条件判断)

  • 条件语句
  • if语句
  • 案例
  • 三目运算符
  • if语句的嵌套使用
  • switch语句
  • 小结:if与switch的区别


条件语句

在Java中条件的判断语句目前有两种if语句和switch语句。

if语句

简单的if语句
格式:

if( 条件表达式 ){
    代码块
}

当条件表达式的结果为true时执行if大括号里的代码块,否则跳过
if…else语句
格式:

if(条件表达式){
   代码块1;
}else{
   代码块2;
}

当条件表达式的结果为true时执行if大括号里的代码块1,否则执行else大括号里的代码块2。
if…else if…else

if(条件表达式1){
   代码块1
}else if(条件表达式2){
   代码块2
}else{
   代码块3
}

当条件表达式1的结果为true时执行代码块1,否则再判断条件表达式2是否成立,如果成立则执行代码块2,条件表达式都不成立,执行代码块3。

java中switch能否判断区间 java判断语句switch_System

案例

import java.util.Scanner;
public class Main {

    public static void main(String[] args)   {
        int a,b;
        //Scanner是用来获取在控制台输入的数据
        Scanner input = new Scanner(System.in);
        a = input.nextInt();
        input.nextLine();
        b = input.nextInt();
        if (a == b){
            System.out.println(a + " == " + b);
        }else if (a < b){
            System.out.println(a + " < " + b);
        }else{
            System.out.println(a + " > " + b);
        }
    }
}

当判断语句的代码块中只有一条语句时可以选择省略{} 例如上面案例的代码可以修改成这样:

import java.util.Scanner;
public class Main {

    public static void main(String[] args)   {
        int a,b;
        Scanner input = new Scanner(System.in);
        a = input.nextInt();
        input.nextLine();
        b = input.nextInt();
        if (a == b)
            System.out.println(a + " == " + b);
        else if (a < b)
            System.out.println(a + " < " + b);
        else
            System.out.println(a + " > " + b);
    }
}

三目运算符

在Java的运算符中有一个三目运算符的作用和if…else的作用一般 条件表达式?语句1:语句2; 举个栗子:b = a > 0 ? (a + b) : -a;这条语句就等于

if(a > 0){
    b = a + b;
else{
    b = -a;
}

需要注意的是三目运算符必须有一个返回值,并且语句只能有一条。

if语句的嵌套使用

if语句是可以嵌套使用的,举个栗子:

import java.util.Scanner;
public class Main {
    public static void main(String[] args)   {
        int year;
        Scanner input = new Scanner(System.in);
        year = input.nextInt();
        if (0 == year % 4){
            if (0 == year % 100){
                if (0 == year % 400){
                    System.out.println("输入的年份是闰年");
                }else{
                    System.out.println("输入的年份不是闰年");
                }
            }else{
                System.out.println("输入的年份是闰年");
            }
        }else{
            System.out.println("输入的年份不是闰年");
        }
    }
}

上面代码的执行流程

java中switch能否判断区间 java判断语句switch_System_02

这种写法让代码变长,我们可以将所有条件整合在一起进行简化:

if (0 == year % 400 && 0 == year % 100 || 0 == year % 4){
            System.out.println("输入的年份是闰年");
        }else{
            System.out.println("输入的年份不是闰年");
        }

switch语句

格式:

switch (表达式值){
            case 0:
                代码块1
                break;
            case 1:
                代码块2
                break;
            case 2:
                代码块3
                break;
            ......
            case n:
                代码块n
                break;
            default:
                代码块n+1
                break;                
        }

switch语句是一个条件选择语句相当于多个简单的if语句

java中switch能否判断区间 java判断语句switch_switch_03

switch首先计算参数的值,如果参数值与case后的常量值相等,则执行该case下的代码块。

  • break的作用是跳出整个switch,如果没有写break那么会执行switch中的所有语句 举个栗子
import java.util.Scanner;
public class Main {
    public static void main(String[] args)   {
        int a;
        Scanner input = new Scanner(System.in);
        a = input.nextInt();
        switch (a){
            case 0:
                System.out.println("这里是:case 0");
            case 1:
                System.out.println("这里是:case 1");
            case 2:
                System.out.println("这里是:case 2");
            case 3:
                System.out.println("这里是:case 3");
            default:
                System.out.println("这里是:default");
        }
    }
}

因为Java是顺序执行的,所以上面的代码执行后会将switch中的语句全部执行,输入0,结果如下:

java中switch能否判断区间 java判断语句switch_Java语言基础_04

  • default后是不用写常量值的,如果前面的所有条件都不成立,就会执行default下的代码块,default是可以省略不写的
  • 在一个switch语句中,case后的常量值不能重复。case语句后的常量表达是指可以是整数(long除外),但绝对不能是实数例如case 5.5

小结:if与switch的区别

if和switch语句都可以实现多条件判断,但if语句主要是对布尔表达式、关系表达式进行判断,而switch主要是对常量值进行判断。