表达式0? 表达式1: 表达式2
表达式0:要是一个布尔表达式,要得到一个布尔值。
int a =100;int b =200;int i =(a > b)? a : b;classBoolExp{publicstaticvoidmain(String[] args){char a =97;char b =98;// int a = 100;// int b = 200;//int c = (a > b) ? a : b;//(a > b) ? a : b; // 这样可以吗?不是语句。// 这个表达式运算完后得到的结果要么是 a; 要么是 b;// a;b;它们都不是语句
System.out.println((a == b)? a : b);// 这样可以吗?为什么?}}println((a == b)? a : b);这样是可以的
那么我们可以想象到,println()中有个参数,为char类型的。
println(char arg);char arg =(a == b)? a : b;println(arg);
到了这里我们可以想到,println()这个方法很强大,它可以对应各种数据类型的东西。
我们一样可以推测,println()一定有多个。
println(int arg)println(byte arg)println(String arg)println(char arg)println(float arg).......
classSwitchTest{publicstaticvoidmain(String[] args){//int i = 100;//String i = "100";/*
byte i = 1;
switch(i) {
case 1:
System.out.println("--->" + i);
break;
case 2:
System.out.println("--->" + i + 1);
break;
case 3:
System.out.println("--->" + i + 2);
break;
}
*/char i =100;switch(i){}}}switch语句中,case是不必要的;default也是不必要的;break也是不必要的。
如果没有break语句,会怎样?会出现case击穿,或者说叫做case穿透。
classSwitchTest02{publicstaticvoidmain(String[] args){int i =1;switch(i){case1:
System.out.println("--->"+ i);case2:
System.out.println("--->"+ i +1);case3:
System.out.println("--->"+ i +2);}}}// 上述代码执行的结果是怎样的?// 全部输出// 这种现象叫做case穿透
输出的结果:
E:\java基础\day02-1>java SwitchTest02
--->1--->11--->12