Java 分支结构

1.分支结构

  任何复杂的逻辑都可以通过“顺序”、“分支”、“循环”三种基本的程序结构来实现。分支结构:程序在运行中,根据不同的条件执行不同的语句。

 

三种结构:

  • if结构:满足条件时执行语句,不满足则不执行(1条路)
  • if...else结构:满足条件执行语句,不满足则执行另外的语句(两条路)
  • if...else if结构:多个条件,满足不同条件执行不同语句(多条路)

1.1 if结构

语法:

if(条件表达式){

  语句块;

}

1)案例1,判断一个整数是不是偶数

public class Test {
    public static void main(String[] args){
        int a = 4;
        if(a%2==0){
        	System.out.println(a+"是偶数");
        }
        System.out.println("over");
    }

}

1.2 if...else结构

语法:

if(条件表达式){ 

  语句块1;

}else{

  语句块2;

}

1)案例1,判断一个整数是不是偶数,并输出结果

public class Test {
    public static void main(String[] args){
        int a = 4;
        if(a%2==0){
        	System.out.println(a+"是偶数");
        }else{
        	System.out.println(a+"不是偶数");
        }
        System.out.println("over");
    }

}

3.if...else if结构(嵌套)

语法:

if(条件表达式1){

  语句块1;

}else if(条件表达式2){

  语句块2;

}else if(条件表达式3){

  语句块3;

}

1)案例1,判断一个数是正数、负数或是0并输出结果

public class Test {
    public static void main(String[] args){
        int a = 4;
        if(a>0){
        	System.out.println(a+"是正数");
        }else if(a<0){
        	System.out.println(a+"是负数");
        }else if(a==0){
        	System.out.println(a+"是0");
        }
        System.out.println("over");
    }

}

2.switch-case

   一种特殊的分支结构,只能用于判断整数,可以根据一个整数表达式的不同值,从不同程序入口开始执行,需要和break配合使用,执行完相应的语句后则退出switch块,不执行下面的语句。

  如果不加break,则会在满足条件后,将该条件下面的其他条件的语句块一起按顺序输出,直到遇到break或}停止,如下案例2。

  default选项可以不写,也不是必须放在后一个(建议放最后),默认匹配完所有条件后不匹配的情况下才会执行default语句,default可以不写break,如下案例3。

 

语法:

switch(判断整数){

case 1:

  语句块1;

  break;

case 2:

  语句块2;

  break;

case 3:

  语句块3;

  break;

default:

  语句块4;

  break;

}

1)案例1

public class Test {
    public static void main(String[] args){
        int a = 4;
        switch(a){
        case 1:
        	System.out.println("A");
        	break;
        case 2:
        	System.out.println("B");
        	break;
        case 3:
        	System.out.println("C");
        	break;
        default:
        	System.out.println("D");
        	break;
        }
    }
}

/*
运行结果:D
*/

2)案例2,不加break的情况

public class Test {
    public static void main(String[] args){
        int a = 2;
        switch(a){
        case 1:
        	System.out.println("A");
        	break;
        case 2:
        	System.out.println("B");

        case 3:
        	System.out.println("C");
        	
        default:
        	System.out.println("D");
        	
        }
    }
}


/*
运行结果:
B
C
D
*/

3)案例3,default不写在最后,default需要加break,如下情况

public class Test {
    public static void main(String[] args){
        int a = 4;
        switch(a){
        default:
        	System.out.println("D");
        case 1:
        	System.out.println("A");
        	break;
        case 2:
        	System.out.println("B");
        	break;
        case 3:
        	System.out.println("C");
        	break;
        }
    }
}

/*
运行结果:
D
A
*/

2.1 switch-case的优缺点

1)优点:

  • 常常和break语句配合使用实现分支的功能
  • 与if...else的主要区别在于switch-case结构的效率高、结构更清晰
  • 从JDK7.0开始,switch-case支持字符串表达式,如下案例

2)缺点:

  •  只能判断整数(字符串)相等

3)案例1,判断字符串

public class Test {
    public static void main(String[] args){
        String sng = "B";
        switch(sng){
        case "A":
        	System.out.println("A");
        	break;
        case "B":
        	System.out.println("B");
        	break;
        default:
        	System.out.println("C");
        	break;
        }
    }
}


/*
运行结果:B
*/

4)案例2,判断字符

public class Test {
    public static void main(String[] args){
        char sng = 'B';
        switch(sng){
        case 'A':
        	System.out.println("A");
        	break;
        case 'B':
        	System.out.println("B");
        	break;
        default:
        	System.out.println("C");
        	break;
        }
    }
}


/*
运行结果:B
*/

  

 

posted @ 2017-05-29 01:33  将暮未暮  阅读(2606)  评论(0编辑  收藏  举报