从零学java笔录-第13篇 程序流程控制(三)

本文是《凯哥陪你学系列之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笔录》

你可能感兴趣的:(从零学java笔录-第13篇 程序流程控制(三))