流程控制-选择结构
流程控制-选择结构
if 单选择结构
我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示。
if (布尔表达式) {
// 如果布尔表达式为true将执行的语句
}
package com.gcbeen.struct;
import java.util.Scanner;
/**
* @author gcbeen
*/
public class IfDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
// equals:判断字符串是否相等
if (s.equals("Hello")) {
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
if 双选择结构
if (布尔表达式) {
// 如果布尔表达式为true
} else {
// 如果布尔表达式值为false
}
package com.gcbeen.struct;
import java.util.Scanner;
/**
* @author gcbeen
*/
public class IfDemo02 {
public static void main(String[] args) {
// 考试分数大于60就是及格,小于60则为不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score > 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
scanner.close();
}
}
if 多选择结构
if (布尔表达式1) {
// 如果布尔表达式1为true执行代码
} else if (布尔表达式2) {
// 如果布尔表达式2为true执行代码
} else if (布尔表达式3) {
// 如果布尔表达式3为true执行代码
} else {
// 如果以上布尔表达式值都不为true执行代码
}
package com.gcbeen.struct;
import java.util.Scanner;
/**
* @author gcbeen
*/
public class IFDemo03 {
public static void main(String[] args) {
// 考试分数大于60就是及格,小于60则为不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score == 100) {
System.out.println("恭喜满分!");
} else if (score < 100 && score >= 90) {
System.out.println("A级");
} else if (score < 90 && score >= 80) {
System.out.println("B级");
} else if (score < 80 && score >= 70) {
System.out.println("C级");
} else if (score < 70 && score >= 60) {
System.out.println("D级");
} else if (score < 60 && score >= 0) {
System.out.println("不及格");
} else {
System.out.println("成绩不合法");
}
scanner.close();
}
}
嵌套的if结构
if (布尔表达式1) {
// 如果布尔表达式1为true执行代码
if (布尔表达式2) {
// 如果布尔表达式2为true执行代码
}
}
switch多选择结构
多选择结构还有一个实现方式就是 switch case语句。
switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
package com.gcbeen.struct;
import java.util.Scanner;
/**
* @author gcbeen
*/
public class SwitchDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//
char grade = 'K';
switch (grade) {
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("再接再厉");
break;
case 'E':
System.out.println("挂科");
break;
default:
System.out.println("成绩错误!!!");
}
scanner.close();
}
}
JDK 7 新特性:判断条件为字符串
package com.gcbeen.struct;
import java.util.Scanner;
public class SwitchDemo02 {
public static void main(String[] args) {
char a = 'b';
switch (a) {
case 'a':
System.out.println('a');
break;
case 'b':
System.out.println('b');
break;
default:
break;
}
String name = "小蚂蚁";
switch (name) {
case "蝼蚁":
System.out.println("蝼蚁");
break;
case "小蚂蚁":
System.out.println("小蚂蚁");
break;
default:
System.out.println("错误");
}
String str = "world";
switch (str) {
case "hello":
System.out.println("hello");
break;
case "world":
System.out.println("world");
break;
default:
break;
}
}
}
实际实现
字节码反编译结果
switch 比较的是 int 型整数
package com.gcbeen.struct;
/* loaded from: SwitchDemo02.class */
public class SwitchDemo02 {
public static void main(String[] args) {
switch (98) {
case 97:
System.out.println('a');
break;
case 98:
System.out.println('b');
break;
}
char c = 65535;
switch ("小蚂蚁".hashCode()) {
case 1109637:
if ("小蚂蚁".equals("蝼蚁")) {
c = 0;
break;
}
break;
case 23749774:
if ("小蚂蚁".equals("小蚂蚁")) {
c = 1;
break;
}
break;
}
switch (c) {
case 0:
System.out.println("蝼蚁");
break;
case 1:
System.out.println("小蚂蚁");
break;
default:
System.out.println("错误");
break;
}
char c2 = 65535;
switch ("world".hashCode()) {
case 99162322:
if ("world".equals("hello")) {
c2 = 0;
break;
}
break;
case 113318802:
if ("world".equals("world")) {
c2 = 1;
break;
}
break;
}
switch (c2) {
case 0:
System.out.println("hello");
return;
case 1:
System.out.println("world");
return;
default:
return;
}
}
}

浙公网安备 33010602011771号