选择结构(二)Switch多选择结构
1.语法
switch(expression){
case value:
//语句;
break;//可不写
case value:
//语句;
break;//可不写
case value:
//语句;
break;//可不写
case value:
//语句;
break;//可不写
default://可不写
//语句;
}
switch语句中的变量可以是byte,short,int或char,现在也支持字符串类型了(从JavaSE7开始)
switch不能加范围如<100,只能加特定值或表达式如100/20
-
例题
public class SwitchDemo01 {
public static void main(String[] args) {
char grade='B';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("再接再厉");
default:
System.out.println("未知等级");
}
}
}
-
case穿透现象
如上例题,当grade为B时,会输出良好,但因为没有break,不会停止,会继续向下运行输出直到遇到break或运行完。 例题中输出结果为良好,及格,再接再厉,未知等级。
-
变量为字符串测试
public class SwitchDemo02 {
public static void main(String[] args) {
String name="苹果";
switch (name){
case "李子":
System.out.println("11");
break;
case "苹果":
System.out.println("22");
break;
case "葡萄":
System.out.println("33");
break;
case "红枣":
System.out.println(44);
break;
}
}
}
写的.java文件需转化为.class文件(字节码文件)来运行。而将.class转为.java为反编译操作
具体操作:点击菜单栏里的project structure,查看project的输出目录,打开该目录--->复制相应的.class文件-->找到相应.java文件所在的文件夹,并将.class文件复制进去。在idea中就可以打开相应的.class文件了且是反编译过后的,如下。反编译之前的.class打开为一片乱码。
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.fj.Structure;
public class SwitchDemo02 {
public SwitchDemo02() {
}
public static void main(String[] args) {
String name = "苹果";
byte var3 = -1;
switch(name.hashCode()) {
case 843202:
if (name.equals("李子")) {
var3 = 0;
}
break;
case 1031489:
if (name.equals("红枣")) {
var3 = 3;
}
break;
case 1065923:
if (name.equals("苹果")) {
var3 = 1;
}
break;
case 1084355:
if (name.equals("葡萄")) {
var3 = 2;
}
}
switch(var3) {
case 0:
System.out.println("11");
break;
case 1:
System.out.println("22");
break;
case 2:
System.out.println("33");
break;
case 3:
System.out.println(44);
}
}
}
可以看到switch是通过hashcode来比对字符串是否相等的,每一个对象都有一个hashcode,在对哈希值进行比对。所以字符串本质上还是数字。
标签:case,break,System,选择,Switch,println,out,class,结构 From: https://www.cnblogs.com/HomeFJ/p/16953423.html