JAVADay5—if语句—switch语句(case穿透现象)—8.20
程序员文章站
2022-06-07 16:04:59
...
1.if语句——if(boolean型)(注意只能是boolean型)
区别以下两种:
boolean型变量可以在if的括号内使用赋值号“=”
public class ifo
{
public static void main(String[] args){
boolean s=false;
if(s=true)//这里写赋值号,编译没错。
{
System.out.println(s);//输出结果是:true
}
}
}
除boolean外的其他变量不可在if的括号内使用赋值号“=”
public class ifo
{
public static void main(String[] args){
int s=9;
if(s=9)//这里写赋值号,编译报错,不通过。因为赋值完s是个int型变量
//(修改方法:变成“==”号可以,判断结果是个boolean型变量)
{
System.out.println(s);//这一句没有执行机会
}
}
}
2.switch语句
0~59不及格;60-69及格;…90-100优
public class switcho
{
public static void main(String[] args){
java.util.Scanner s =new java.util.Scanner(System.in);
System.out.println("请输入成绩:");
double Grade=s.nextDouble();
String str="优";
int Score=(int)Grade/10;
switch (Score)
{
case 0:case 1:case 2:case 3:case 4:case 5:
{
str="不及格";
break;
}
case 6:
{
str="及格";
break;
}
case 7:
{
str="中";
break;
}
case 8:
{
str="良";
break;
}
case 9:
{
str="优";
break;
}
default:
{
str="成绩不合法";
break;
}
}
System.out.println("成绩:"+str);
}
}
case穿透现象:如下代码
在缺少break时(当然,break也不是非有不可,只不过它可以防止case穿透而已)
int Score=(int)Grade/10;
switch (Score){
case 6:{str="及格";}
case 7:{str="中";}
case 8:{str="良";}
case 9:{str="优";break;}
}
score=6时,在执行完str=“及格”;后,case7、case8、case9的条件不再判断,直接执行其内的语句,直到break让代码停下来。
所以输出结果是“优”。
switch(),括号内可以是int、short、byte、char型。
只不过内部运行时,他们都转换为了int型。
上一篇: 多线程之callable接收返回值