本文是《凱哥陪你學(xué)系列之java基礎(chǔ)篇》燥爷。歡迎關(guān)注本賬號(hào)寄摆,持續(xù)更新中~
本講主要內(nèi)容:
1:選擇語(yǔ)句(下)
2:switch練習(xí)1谅辣、練習(xí)2
3:switch和if的區(qū)別
char練習(xí):
需求:
根據(jù)用戶(hù)輸入的符號(hào),對(duì)a b進(jìn)行對(duì)應(yīng)的操作
代碼
class SwitchCharDemo{
public static void main(String[] args){
//需求 :根據(jù)用戶(hù)輸入的符號(hào)婶恼,對(duì)a b進(jìn)行對(duì)應(yīng)的操作
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("哥們我不認(rèn)識(shí)這個(gè)符號(hào)");
break;
}
}
}
結(jié)果:
break是否可以省略桑阶。
答:部分可以省略。
分析原因:
從上面練習(xí)我們知道switch 結(jié)束方式之一就是當(dāng)遇到break的時(shí)候就返回不往下執(zhí)行了勾邦。
結(jié)束方式二:就是當(dāng)執(zhí)行到}大括號(hào)時(shí)候蚣录,整個(gè)代碼塊執(zhí)行完畢就跳出switch了。
所以眷篇,當(dāng)離大括號(hào) }最近的一個(gè)break可以省略不寫(xiě)萎河。
那么其他位置的break可以不寫(xiě)嗎?
不能=侗虐杯!
代碼體現(xiàn):
修改上面練習(xí)代碼,將其中的break都注釋掉:
class SwitchCharDemoBreak{
public static void main(String[] args){
//需求 :根據(jù)用戶(hù)輸入的符號(hào)椎椰,對(duì)a b進(jìn)行對(duì)應(yīng)的操作
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("哥們我不認(rèn)識(shí)這個(gè)符號(hào)");
//break;
}
}
}
運(yùn)行結(jié)果
從結(jié)果可以看:程序凌亂了O梅!沒(méi)錯(cuò)慨飘,程序已經(jīng)被你搞的凌亂了确憨。
switch 練習(xí)1
需求:
模擬用戶(hù)坐電梯。樓層共有10層瓤的,其中1-4層電梯不停休弃,當(dāng)?shù)搅擞脩?hù)輸入的電梯層數(shù)時(shí)候提醒當(dāng)前電梯層數(shù)并停止,等待用戶(hù)出去圈膏。
代碼:
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;
}
}
}
}
當(dāng)輸入的數(shù)1-4的時(shí)候:
當(dāng)輸入5—10的時(shí)候
switch練習(xí)2:
練習(xí)目的:學(xué)習(xí)多個(gè)case并用
需求:
根據(jù)用戶(hù)輸入的月份塔猾,輸出對(duì)應(yīng)的季節(jié)
提示:3-5月是春季,6-8月是夏季 9-11月是秋季 12-2月是冬季
思路分析:
1:根據(jù)提示 3-5月是春季稽坤。
那么是不是 case 3:
System.out.println("春季");
case 4:
System.out.println("春季");
case 5:
System.out.println("春季");
其他以此類(lèi)推丈甸。
這樣做糯俗,可以是可以,但是效率不高睦擂。
case有沒(méi)有 比如 大于等于 3小于等于5的得湘?
答案是:肯定沒(méi)有!
那可不可以實(shí)現(xiàn)類(lèi)似的效果呢顿仇?
答案:這個(gè)可以有淘正,真可以有!
寫(xiě)法:
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;
}
}
}
輸出結(jié)果:
思考:
我們知道一年就只有12個(gè)月份鸿吆。上面的代碼是否可以?xún)?yōu)化?
提示:可以和判斷語(yǔ)句配合使用
switch語(yǔ)句和判斷語(yǔ)句(if)的區(qū)別:
從上面星期的demo中我們可以看出述呐,使用if判斷語(yǔ)句也可以實(shí)現(xiàn)同樣的效果惩淳。
那么問(wèn)題來(lái)了,什么時(shí)候使用switch市埋?什么時(shí)候使用if判斷語(yǔ)句黎泣?這兩個(gè)又有什么區(qū)別呢?
分析if和switch的特點(diǎn)
if特點(diǎn):
1:對(duì)具體的值進(jìn)行判斷? 比如 3>2
2:對(duì)區(qū)間判斷 比如 3
3:運(yùn)算結(jié)果是boolean類(lèi)型的表達(dá)式進(jìn)行判斷的
if(表達(dá)式):其中表達(dá)式結(jié)果只能是true或者是false缤谎。
switch特點(diǎn):
1:對(duì)具體的值進(jìn)行判斷的 比如 int x = 3 case 3:
2:值的個(gè)數(shù)通常是固定的且不會(huì)太多。比如 + 褐着、-坷澡、*、/含蓉;星期频敛、月份這些
如果值太多的話(huà),效率比較低馅扣。
如果固定的幾個(gè)值的時(shí)候斟赚,建議使用switch語(yǔ)句。
原因:switch語(yǔ)句代碼塊是一次性加載到內(nèi)存中差油,而if判斷語(yǔ)句是多個(gè)代碼塊不是一次加載的拗军。效率相對(duì)要不switch低。
switch缺點(diǎn)
1:功能性較差
2:書(shū)寫(xiě)麻煩蓄喇,書(shū)寫(xiě)麻煩帶來(lái)的壞處就是容易出錯(cuò)发侵。
所以switch在正常開(kāi)發(fā)中使用的較少。
ps:歡迎關(guān)注凱哥微信公眾號(hào):凱哥Java
ps:
本系列教程專(zhuān)題 《從零學(xué)java筆錄》