本文是《凯哥陪你学系列之java基础篇》。欢迎关注本账号,持续更新中~
本讲主要内容:
1:选择语句(下)
2:switch练习1、练习2
3:switch和if的区别
char练习:
需求:
根据用户输入的符号,对a b进行对应的操作
代码
class SwitchCharDemo{
public static void main(String[] args){
//需求 :根据用户输入的符号,对a b进行对应的操作
int a = 9;
int b = 3;
char c = '+';
switch(c){
case '+':
System.out.println("a + b = " + (a+b));
break;
case '-' :
System.out.println("a - b = "+(a-b));
break;
case '*' :
System.out.println("a * b = " +(a * b));
break;
case '/' :
System.out.println("a/b = " + (a/b));
break;
default:
System.out.println("哥们我不认识这个符号");
break;
}
}
}
结果:
break是否可以省略。
答:部分可以省略。
分析原因:
从上面练习我们知道switch 结束方式之一就是当遇到break的时候就返回不往下执行了。
结束方式二:就是当执行到}大括号时候,整个代码块执行完毕就跳出switch了。
所以,当离大括号 }最近的一个break可以省略不写。
那么其他位置的break可以不写吗?
不能!!
代码体现:
修改上面练习代码,将其中的break都注释掉:
class SwitchCharDemoBreak{
public static void main(String[] args){
//需求 :根据用户输入的符号,对a b进行对应的操作
int a = 9;
int b = 3;
char c = '+';
switch(c){
case '+':
System.out.println("a + b = " + (a+b));
//break;
case '-' :
System.out.println("a - b = "+(a-b));
//break;
case '*' :
System.out.println("a * b = " +(a * b));
//break;
case '/' :
System.out.println("a/b = " + (a/b));
//break;
default:
System.out.println("哥们我不认识这个符号");
//break;
}
}
}
运行结果
从结果可以看:程序凌乱了!!没错,程序已经被你搞的凌乱了。
switch 练习1
需求:
模拟用户坐电梯。楼层共有10层,其中1-4层电梯不停,当到了用户输入的电梯层数时候提醒当前电梯层数并停止,等待用户出去。
代码:
class SwitchTest{
public static void main(String[] args){
int lift = 4;
if(lift >1 && lift<=4){
System.out.println("本电梯在1-4层不停");
}else{
switch(lift){
case 5:
System.out.println("五层已到");
break;
case 6 :
System.out.println("六层已到");
break;
case 7 :
System.out.println("七层已到");
break;
case 8 :
System.out.println("八层已到");
break;
case 9 :
System.out.println("九层已到");
break;
case 10 :
System.out.println("顶层已到");
default:
System.out.println("首层已到");
break;
}
}
}
}
当输入的数1-4的时候:
当输入5—10的时候
switch练习2:
练习目的:学习多个case并用
需求:
根据用户输入的月份,输出对应的季节
提示:3-5月是春季,6-8月是夏季 9-11月是秋季 12-2月是冬季
思路分析:
1:根据提示 3-5月是春季。
那么是不是 case 3:
System.out.println("春季");
case 4:
System.out.println("春季");
case 5:
System.out.println("春季");
其他以此类推。
这样做,可以是可以,但是效率不高。
case有没有 比如 大于等于 3小于等于5的?
答案是:肯定没有!
那可不可以实现类似的效果呢?
答案:这个可以有,真可以有!
写法:
case 3:
case 4:
case 5;
System.out.println("春季");
代码:
class SwitchTest2{
public static void main(String[] args){
int moth = 6;
switch(moth){
case 3:
case 4:
case 5:
System.out.println(moth +"月份是春季");
break;
case 6:
case 7:
case 8:
System.out.println(moth +"月份是夏季");
break;
case 9:
case 10:
case 11:
System.out.println(moth +"月份是秋季");
break;
case 12:
case 1:
case 2:
System.out.println(moth +"月份是冬季");
break;
default:
System.out.println("地球上不存在"+moth +"月份");
break;
}
}
}
输出结果:
思考:
我们知道一年就只有12个月份。上面的代码是否可以优化?
提示:可以和判断语句配合使用
switch语句和判断语句(if)的区别:
从上面星期的demo中我们可以看出,使用if判断语句也可以实现同样的效果。
那么问题来了,什么时候使用switch?什么时候使用if判断语句?这两个又有什么区别呢?
分析if和switch的特点
if特点:
1:对具体的值进行判断 比如 3>2
2:对区间判断 比如 3
3:运算结果是boolean类型的表达式进行判断的
if(表达式):其中表达式结果只能是true或者是false。
switch特点:
1:对具体的值进行判断的 比如 int x = 3 case 3:
2:值的个数通常是固定的且不会太多。比如 + 、-、*、/;星期、月份这些
如果值太多的话,效率比较低。
如果固定的几个值的时候,建议使用switch语句。
原因:switch语句代码块是一次性加载到内存中,而if判断语句是多个代码块不是一次加载的。效率相对要不switch低。
switch缺点
1:功能性较差
2:书写麻烦,书写麻烦带来的坏处就是容易出错。
所以switch在正常开发中使用的较少。
ps:欢迎关注凯哥微信公众号:凯哥Java
ps:
本系列教程专题 《从零学java笔录》