JAVA提供两种最常见的分支控制结构:if和switch语句
一、if条件语句
if语句有三种形式。
第一种形式: if(logic expression) { statement··· } 第二种形式 if(logic expression) { statement··· } else(logic expression) { statement··· } 第三种形式 if(logic expression) { statement··· } else if(logic expression) { statement··· } ···//可以省略多个else if语句 else(logic expression) { statement··· }
例子:
1 import java.util.*; 2 class ifTest 3 { 4 public static void main(String[] args) 5 { 6 int age; 7 System.out.print("请输入年龄:"); 8 Scanner sc=new Scanner(System.in); 9 age=sc.nextInt(); 10 if(age<13) 11 { 12 System.out.println("儿童"); 13 } 14 else if(age<20) 15 { 16 System.out.println("少年"); 17 } 18 else if(age<40) 19 { 20 System.out.println("青年"); 21 } 22 else if(age<60) 23 { 24 System.out.println("中年"); 25 } 26 else 27 { 28 System.out.println("老年"); 29 } 30 } 31 }
二、switch语句
switch语句由一个控制表达式和多个标签组成,和if语句不同的是,switch语句后面的控制表达式的数据类型只能是byte、short、char、int四种整数类型,枚举类型和java.lang.String类型(从Java 7才允许),不能是boolean类型。
switch语法格式:
1 switch (expression) 2 { 3 case condition1: 4 { 5 代码块1 6 break; 7 } 8 case condition2: 9 { 10 代码块2 11 break; 12 } 13 ... 14 case conditionN: 15 { 16 代码块N 17 break; 18 } 19 default: 20 { 21 代码块 22 } 23 }
实例:
1 import java.util.*; 2 class SwitchTest 3 { 4 public static void main(String[] args) 5 { 6 System.out.print("请输入分数等级:"); 7 //声明变量score 8 Scanner sc = new Scanner(System.in); 9 char score=sc.next().charAt(0); 10 switch(score) 11 { 12 case 'A': 13 System.out.println("优秀"); 14 break; 15 case 'B': 16 System.out.println("良"); 17 break; 18 case 'C': 19 System.out.println("中"); 20 break; 21 default: 22 System.out.println("不及格"); 23 } 24 } 25 }
Java11编译器做了一些改进,如果开发者忘记了case块后面的break语句,Java11编译器会生成警告:“[fallthrough]可能无法实现case”
Java 7开始增强了switch语句的功能,允许switch语句的控制表达式java.lang.String类型的变量或表达式——只能是java.lang.String类型,不能是StringBuffer或StringBuilder这两个字符串类型。
1 class StringSwitchTest 2 { 3 public static void main(String[] args) 4 { 5 //声明变量season 6 var season="夏天"; 7 switch (season) 8 { 9 case "春天": 10 System.out.println("春暖花开"); 11 break; 12 case "夏天": 13 System.out.println("夏日炎炎"); 14 break; 15 case "秋天": 16 System.out.println("秋风送爽"); 17 break; 18 case "冬天": 19 System.out.println("冬雪皑皑"); 20 break; 21 default: 22 System.out.println("季节输入错误"); 23 } 24 } 25 }