从零学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笔录》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容