在上節(jié)課我們講解了基本數(shù)據(jù)類型和變量,本節(jié)課陨界,我們將講解運(yùn)算符及分支結(jié)構(gòu)巡揍。
1.運(yùn)算符
我們將來會通過我們寫的代碼,做出各種功能強(qiáng)大并且復(fù)雜的項(xiàng)目菌瘪。但是項(xiàng)目再牛腮敌,也是由一行一行的代碼來組成。那么組成代碼的最小單元是什么呢俏扩?就是一個個表達(dá)式糜工。那么什么是表達(dá)式呢喻犁?表達(dá)式是由操作數(shù)和符號組成的式子壁公。
操作數(shù):變量、常量厦章、字面量
變量赁咙,就是咱們上節(jié)課學(xué)習(xí)到的钮莲,特點(diǎn)是在使用過程中,變量的值可以更改
例如 int a = 10; a就是變量彼水,我們可以在后續(xù)將a的值改為其它值崔拥;a = 100;
常量,就是值一旦確定凤覆,就不可更改
例如 final int a = 10; 此時 a就是常量链瓦,它的值只能是10,不能再更改盯桦。
字面量慈俯,就是按照字面意思理解的數(shù)據(jù),例如3拥峦,就是字面量贴膘。
符號,一般就是指咱們馬上要學(xué)習(xí)的運(yùn)算符略号,和數(shù)學(xué)中的運(yùn)算符幾乎一樣刑峡。
由這兩者構(gòu)成表達(dá)式洋闽。
我們常用到的運(yùn)算符有
1.算術(shù)運(yùn)算符
2.關(guān)系運(yùn)算符
3.邏輯運(yùn)算符
4.復(fù)合運(yùn)算符
5.位運(yùn)算符
6.其它運(yùn)算符
接下來,咱們詳細(xì)講解下運(yùn)算符
1.算術(shù)運(yùn)算符
符號 | 名稱 | 作用 |
---|---|---|
+ | 加 | 進(jìn)行加法運(yùn)算 |
- | 減 | 進(jìn)行減法運(yùn)算 |
* | 乘 | 進(jìn)行乘法運(yùn)算 |
/ | 除 | 進(jìn)行除法運(yùn)算 |
% | 取模 | 進(jìn)行取余數(shù)運(yùn)算 |
接下來我們通過代碼驗(yàn)證下運(yùn)算符突梦,記得代碼還是要寫在main方法中诫舅,
//等號也是運(yùn)算符,是賦值運(yùn)算符宫患,將等號左邊的結(jié)果刊懈,賦值給右邊的變量
int a = 10;
int b = 2;
//該表達(dá)式就是將a和b的和賦值給變量c,那么c的值就應(yīng)該是12.
int c = a + b;
/*
輸出c變量的結(jié)果撮奏,雙引號里面的內(nèi)容原樣輸出俏讹,此處的加號是拼接作用
沒有加雙引號的c,會輸出c變量的值畜吊。所以輸出結(jié)果就是
c=12
*/
System.out.println("c = " + c);
/*我們接著嘗試其它運(yùn)算符,由于c變量已將再上面聲明過了户矢,所以此處我們直接使用即可玲献。
*/
//此表達(dá)式就相當(dāng)于c = 10 - 2;
c = a - b;
//輸出內(nèi)容為 c = 8
System.out.println("c = " + c);
//乘法
c = a * b;
//輸出內(nèi)容為 c = 20
System.out.println("c = " + c);
//除法
c = a / b;
//輸出內(nèi)容為 c = 5
System.out.println("c = " + c);
//在除法中,如果參與運(yùn)算的都是整型數(shù)梯浪,那么除法就是取整
//9和2都是整型數(shù)捌年,相除之后,商4余1挂洛,此處只取商
c = 9 / 2;
//此時的結(jié)果就是 c = 4
System.out.println("c = " + c);
//如果參與運(yùn)算的有浮點(diǎn)型礼预,那么就是正常除法
//9.0為浮點(diǎn)型,不是整型數(shù)
double d = 9.0 / 2;
//此處結(jié)果為 d = 4.5
System.out.println("d = " + d);
//取模,實(shí)際上就是取余數(shù)
//商 5 余 0虏劲,取余數(shù)托酸,結(jié)果為0
c = 10 % 2;
//輸出結(jié)果為 c = 0
System.out.println("c = " + c);
//商1 余 1.5,所以結(jié)果為1.5
d = 4.5 / 3;
//輸出結(jié)果為 d= 1.5
System.out.println("d = " + d);
2.關(guān)系運(yùn)算符
符號 | 名稱 | 示例 |
---|---|---|
> | 大于號 | 10 > 5 |
< | 小于號 | 10 < 5 |
>= | 大于等于號 | 10 >= 5 |
<= | 小于等于號 | 10 <= 5 |
== | 等于號 | 10 == 5 |
!= | 不等于號 | 10 != 5 |
關(guān)系運(yùn)算符的結(jié)果都是布爾值柒巫,因?yàn)殛P(guān)系運(yùn)算符就是表示兩個變量或者數(shù)字之間的關(guān)系励堡,例如 10 > 5 這個表達(dá)式成立,所以結(jié)果為true;10 < 5 這個表達(dá)式不成立堡掏,結(jié)果為false.
接著咱們通過代碼講解下運(yùn)算符
int x = 10;
int y = 100;
//小于號 10 < 100,成立
boolean result = x < y;
//輸出結(jié)果就是result = true
System.out.println("result = " + result);
//大于號 10 > 100 不成立
result = x > y;
//輸出結(jié)果就是result = false
System.out.println("result = " + result);
/*
大于等于应结,意思是說大于或者等于,只要滿足其中之一泉唁,結(jié)果就為true鹅龄,
如果兩者都不滿足,結(jié)果就為false
*/
result = 5 >= 5;
//輸出結(jié)果就是result = true,雖然不滿足5 > 5,但是滿足 5 == 5,所以為true
System.out.println("result = " + result);
//好了亭畜,后續(xù)的 <=扮休、!=、==自己可以試一試贱案。
我們接著說說關(guān)系運(yùn)算符要注意的點(diǎn)肛炮,
例如我們想表示一個變量需要大于5并且小于10止吐,不能像數(shù)學(xué)中一樣寫成5<x<10,要表示成這樣侨糟,需要結(jié)合后續(xù)說到的邏輯運(yùn)算符碍扔。
3.邏輯運(yùn)算符
符號 | 名稱 | 示例 |
---|---|---|
&& | 與 | 表達(dá)式1 && 表達(dá)式2 |
| | | 或 | 表達(dá)式1 || 表達(dá)式2 |
! | 非 | !表達(dá)式 |
這里需要注意的就是,邏輯運(yùn)算符可以連接多個表達(dá)式秕重,但是這些表達(dá)式的結(jié)果必須是布爾值不同,也可以連接多個值,但是這些值必須是布爾值溶耘。邏輯運(yùn)算的結(jié)果也是一個布爾值二拐。
接下來我們通過代碼來具體說明用法
/*
&&,有假即為假.意思是說邏輯與連接的多個表達(dá)式,只要有一個表達(dá)式的結(jié)果
為假凳兵,那么整個表達(dá)式的結(jié)果就是假;只有當(dāng)所有表達(dá)式的結(jié)果為真百新,最終結(jié)果才為真
*/
//10 > 5為真,100 < 7為假庐扫,所以整個表達(dá)式的結(jié)果為假饭望。
boolean result = 10 > 5 && 100 < 7;
//輸出結(jié)果 result = false
System.out.println("result = " + result);
/*
&&,也被稱之為短路與,意思是說形庭,當(dāng)邏輯與連接的多個表達(dá)式铅辞,其中某個表達(dá)式為假了,
那么該表達(dá)式后面的表達(dá)式就不會執(zhí)行了萨醒。
*/
//此處因?yàn)?0 < 5的結(jié)果已經(jīng)為假斟珊,所以該表達(dá)式后面的表達(dá)式不會再執(zhí)行。
result = 10 < 5 && 10 > 1 && 100 < 1000;
/*
與之對應(yīng)的有通路與富纸,&,它和短路與的區(qū)別就是囤踩,它會執(zhí)行所有的表達(dá)式
*/
//此處即使10 < 5已經(jīng)為假了,但是后面的表達(dá)式還是會執(zhí)行
result = 10 < 5 & 10 > 1 & 100 < 1000;
/*
不管是通路還是短路,它們最終的結(jié)果是一樣的胜嗓。例如上面的表達(dá)式高职,
不管使用&&還是&,它最終的結(jié)果都是假
*/
/*
||,邏輯或辞州,有真即為真怔锌,意思是連接的多個表達(dá)式或者值,只要有一個結(jié)果為真变过,那么整體表達(dá)式的結(jié)果就是真埃元;
它也可以連接多個表達(dá)式,但是每個表達(dá)式的結(jié)果必須是布爾值,
也可以連接多個值媚狰,但是值必須是布爾值
*/
//該表達(dá)式中岛杀,由于10 > 1為真,所以整個表達(dá)式的結(jié)果就是真
result = 10 < 5 || 10 > 1 || 100 < 1000;
/*
||,也被稱之為短路或崭孤,意思是說类嗤,當(dāng)邏輯或連接的多個表達(dá)式糊肠,其中某個表達(dá)式為真了,
那么該表達(dá)式后面的表達(dá)式就不會執(zhí)行了遗锣。
*/
//10 > 1已經(jīng)為真货裹,所以后面的100 < 1000就不會執(zhí)行了。
result = 10 < 5 || 10 > 1 || 100 < 1000;
/*
與之對應(yīng)的有通路或精偿,|,它和短路或的區(qū)別就是弧圆,它會執(zhí)行所有的表達(dá)式
*/
//此處即使10 > 5已經(jīng)為真了,但是后面的表達(dá)式還是會執(zhí)行
result = 10 > 5 | 10 > 1 | 100 < 1000;
/*
不管是通路還是短路,它們最終的結(jié)果是一樣的笔咽。例如上面的表達(dá)式搔预,
不管使用|還是||,它最終的結(jié)果都是真
*/
/*
!,非叶组,就是取反拯田,原來表達(dá)式的值為true,那么取反就是false甩十,如果是false,
取反就是true勿锅。所以非作用的表達(dá)式的結(jié)果必須是布爾值,整個表達(dá)式的結(jié)果也是一個布爾值
*/
//在運(yùn)算符中枣氧,有括號,先運(yùn)算括號里面的所以此處會先運(yùn)行10 > 5 再對結(jié)果取反
result = !(10 > 5);
//此處打印結(jié)果為false
System.out.println(result);
4.復(fù)合運(yùn)算符
符號 | 名稱 | 示例 |
---|---|---|
+= | 加等 | a += 30; 在結(jié)果上等同于 a = a + 30; |
-= | 減等 | a -= 30; 在結(jié)果上等同于 a = a - 30; |
*= | 乘等 | a *= 30; 在結(jié)果上等同于 a = a * 30; |
/= | 除等 | a /= 30; 在結(jié)果上等同于 a = a / 30; |
%= | 取余等 | a %= 30; 在結(jié)果上等同于 a = a % 30; |
/*
復(fù)合運(yùn)算符就相當(dāng)于在變量本身數(shù)值的基礎(chǔ)上垮刹,進(jìn)行運(yùn)算达吞,將得到的結(jié)果再賦值給本身
*/
int a = 10;
//等同于 a = a + 10;在a原有值的基礎(chǔ)上再增加10,那么結(jié)果就是20
a += 10;
//輸出結(jié)果就是 a = 20;
System.out.println("a = " + a);
//其它的運(yùn)算符都是同樣的道理荒典,可以自己通過代碼感受下酪劫。
/*
接下來我們說說 a += 30;和 a = a + 30的區(qū)別
*/
int a = 10;
//整數(shù)后面帶L,代表該數(shù)字為long型寺董,長整型
/*當(dāng)有多個類型的變量或者值參與運(yùn)算時覆糟,整個表達(dá)式的結(jié)果以表數(shù)范圍最大的類型為準(zhǔn),
所有 a + 3L的值的類型為long型遮咖,比int表數(shù)范圍大滩字,所以此處我們需要強(qiáng)制轉(zhuǎn)換.
*/
a = (int)(a + 3L);
//如果我們使用了復(fù)合運(yùn)算符進(jìn)行運(yùn)算,它會自己轉(zhuǎn)換類型御吞,不用我們強(qiáng)制轉(zhuǎn)換
a += 3L;
//上面就是兩者的區(qū)別麦箍,雖然結(jié)果一樣,但是一個需要強(qiáng)制轉(zhuǎn)換陶珠,一個不需要
5.位運(yùn)算符
符號 | 名稱 | 示例 |
---|---|---|
& | 位與 | 2 & 5的結(jié)果是0 挟裂; 轉(zhuǎn)換為二進(jìn)制,按位與揍诽,有0即為0 |
| | 位或 | 2 | 5的結(jié)果是7诀蓉; 轉(zhuǎn)換為二進(jìn)制栗竖,按位或,有1即為1 |
<< | 左移 | 2 << 1 的結(jié)果是4渠啤; 轉(zhuǎn)換為二進(jìn)制狐肢,向左移動一位,等同于乘以2 |
>> | 右移 | 2 >> 1 的結(jié)果是 1埃篓; 轉(zhuǎn)換為二進(jìn)制处坪,向右移動一位,等同于除以2 |
^ | 異或 | 2 ^ 5的結(jié)果是7架专; 轉(zhuǎn)換為二進(jìn)制同窘,按位異或,不同即為1部脚, 相同即為0 |
位運(yùn)算符是將數(shù)字轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)想邦,然后按位進(jìn)行運(yùn)算。咱們一個一個看委刘。
/*
1.&,按位與丧没,將數(shù)值轉(zhuǎn)換為二進(jìn)制數(shù)字,每位上的數(shù)字進(jìn)行與運(yùn)算锡移,
有0即為0呕童;如果位數(shù)不對應(yīng),高位用0補(bǔ)齊淆珊。
*/
/*
此處5轉(zhuǎn)換為二進(jìn)制是101夺饲;2轉(zhuǎn)換為二進(jìn)制是10;
所以 5 & 2就是 101 與上 10施符,由于10比101少一位往声,高位用0補(bǔ)齊;
就成了 101 與上010戳吝,按位與之后浩销,就變成了 000,所以 最終結(jié)果為0
*/
int a = 5 & 2;
//打印結(jié)果為a = 0
System.out.println("a = " + a);
/*
|听哭,按位或和按位與大同小異慢洋,二進(jìn)制之后,有1即為1欢唾;
*/
/*
就是 101 或上 010且警,每一位上有1即為1,結(jié)果就是111礁遣,轉(zhuǎn)換為十進(jìn)制就是4 + 2 + 1 = 7
*/
a = 5 | 2;
//打印結(jié)果為a = 7
System.out.println("a = " + a);
/*
m << n斑芜,將m轉(zhuǎn)換為二進(jìn)制數(shù)字,然后左移動n位祟霍,等同于m 乘以2的n次冪
*/
/*
將5轉(zhuǎn)換為二進(jìn)制位101杏头,左移動兩位變?yōu)?10100盈包,轉(zhuǎn)換為10進(jìn)制為20,
就相當(dāng)于 5 乘以 2的2次冪 就是5乘以4等于20
*/
a = 5 << 2;
//打印結(jié)果為a = 20
System.out.println("a = " + a);
/*
m >> n醇王,將m轉(zhuǎn)換為二進(jìn)制數(shù)字呢燥,然后右移動n位,等同于m 除以2的n次冪寓娩,然后取整數(shù)部分
*/
/*
將5轉(zhuǎn)換為二進(jìn)制位101叛氨,右移動兩位變?yōu)?001,轉(zhuǎn)換為10進(jìn)制為1棘伴,
就相當(dāng)于 5 除以 2的2次冪 就是5除以4寞埠,取整數(shù)部分為1
*/
a = 5 >> 2;
//打印結(jié)果為a = 1
System.out.println("a = " + a);
/*
^,按位異或焊夸,二進(jìn)制之后仁连,每一位相同即為0,不同即為1阱穗;
*/
/*
5 ^ 2 就是 101 異或 010 饭冬,按位異或之后,變成了 111, 轉(zhuǎn)換為十進(jìn)制為 7
*/
a = 5 ^ 2;
//打印結(jié)果為a = 7
System.out.println("a = " + 7);
其它運(yùn)算符
符號 | 名稱 | 示例 |
---|---|---|
++ | 自增 | a++,相當(dāng)于在a的基礎(chǔ)上加1揪阶,然后再賦值給a |
-- | 自減 | a--,相當(dāng)于在a的基礎(chǔ)上減1昌抠,再賦值給a |
? : | 三目運(yùn)算符 | 表達(dá)式 ? 值1 : 值2,如果表達(dá)式的值為true鲁僚,那么整個表達(dá)式的值為值1扰魂,如果表達(dá)式的值為false,那么整個表達(dá)式的值為值2 |
接下來蕴茴,咱們通過代碼來詳細(xì)說一下
int a = 10;
//等同于 a = a + 1;
a++;
//所以輸出為a = 11
System.out.println("a = " + a);
//重新將的值置為10
a = 10;
//等同于 a = a + 1;
++a;
//所以輸出為a = 11
System.out.println("a = " + a);
/*
接下來我們說說 ++在前和在后的區(qū)別,
通過上面的代碼我們看出來姐直,好像在前在后沒有區(qū)別倦淀,結(jié)果都是11,
當(dāng)我們使用++沒有參與其它運(yùn)算時声畏,它兩的效果一樣撞叽;如果參與其它運(yùn)算
時,++在前插龄,先自身加1愿棋,然后參與其它運(yùn)算;++在后均牢,先參與其它運(yùn)算糠雨,
然后自身再加1.
*/
int m = 10;
/*
這里有自增運(yùn)算,又有賦值運(yùn)算徘跪,由于++在后甘邀,所以先將m賦值給n琅攘,那么n的值就是10,
然后m本身再加1松邪,那么 m的值就是11
等同于
int n = m;
m = m + 1;
*/
int n = m++;
//此處打印 n = 10; m = 11
System.out.println("n = " + n);
System.out.println("m = " + m);
int x = 10;
/*
此處既有自增運(yùn)算坞琴,又有賦值運(yùn)算,由于++在前逗抑,所以先為x加1剧辐,x的值就為11了 ,
然后再賦值給y邮府,所以y的值為11
等同于
x = x + 1;
int y = x;
*/
int y = ++x;
//此處打印 x = 11; y = 11
System.out.println("x = " + x);
System.out.println("y = " + y);
/*
只有當(dāng)參與其它運(yùn)算時荧关,才需要區(qū)分在前在后,如果不參與其它運(yùn)算挟纱,效果一樣羞酗。
*/
/*
--,自減運(yùn)算符和自增運(yùn)算符類似紊服,只是將加1檀轨,變?yōu)闇p1即可;
參與其它運(yùn)算時欺嗤,--在前参萄,先自減,再參與其它運(yùn)算煎饼;--在后讹挎,先參與其它運(yùn)算,再自減吆玖。
可以根據(jù)上面的自增代碼筒溃,自己試試自減運(yùn)算符,
*/
//三目運(yùn)算符
//由于表達(dá)式 7 > 5的值為true沾乘,所有整個表達(dá)式的值為冒號前面的值怜奖,為7
int i = 7 > 5 ? 7 : 5;
//打印結(jié)果為 i = 7;
System.out.println("i = " + i);
//由于表達(dá)式 7 < 5的值為false,所有整個表達(dá)式的值為冒號后面的值翅阵,為100
i = 7 < 5 ? 10 : 100;
//打印結(jié)果為 i = 100
System.out.println("i = " + i);
到這里為止歪玲,我們的常用運(yùn)算符就講解完畢,接下來我們簡單說一下運(yùn)算符的優(yōu)先級掷匠。當(dāng)有多種運(yùn)算符時滥崩,優(yōu)先級高的先運(yùn)算。
一般情況下讹语,算術(shù)運(yùn)算符的優(yōu)先級高于關(guān)系運(yùn)算符钙皮,關(guān)系運(yùn)算符的優(yōu)先級高于邏輯運(yùn)算符,邏輯運(yùn)算符高于賦值運(yùn)算符;至于每種運(yùn)算符內(nèi)部的優(yōu)先級株灸,可以自己通過代碼嘗試下崇摄。
當(dāng)然,我們不用死記硬背這個優(yōu)先級慌烧,我們想讓那種運(yùn)算先運(yùn)算逐抑,就加括號即可;例如 int a = 8 + 4 * 5;我們想讓8+4先執(zhí)行屹蚊,就可以寫成 int a = (8 + 4) * 5;
2.分支結(jié)構(gòu)
再說分支結(jié)構(gòu)之前厕氨,在這里所以寫題外話,不要將編程看成是多高大上的東西汹粤,編程無外乎就是通過技術(shù)手段來解決現(xiàn)實(shí)生活中的問題命斧。話題扯回來,接著說我們的分支結(jié)構(gòu)嘱兼。
分支結(jié)構(gòu)是用來解決生活中選擇性的問題国葬,例如:一個朋友給你打電話說,明天有沒有空芹壕,去網(wǎng)吧開黑盎闼摹!踢涌,你想了想通孽,自己還是單身,就回答說睁壁,如果你女朋友也去背苦,那我就不去了! 這就是生活中選擇的場景,也就是我們分支結(jié)構(gòu)要解決的問題潘明,當(dāng)滿足某個條件行剂,我就做哪些操作,不滿足钳降,我就做哪些操作硼讽。
在Java中,分支結(jié)果一共有兩種牲阁,一種是if,一種是switch壤躲,接下來我們一個一個詳細(xì)講解城菊。
2.1 if
if分支的的形式一共以下幾種
需要注意的點(diǎn)有:
1.此處的條件可以是表達(dá)式或者值,但是最終的運(yùn)算結(jié)果必須是一個布爾值
2.一個分支結(jié)構(gòu)中碉克,一次最多只能執(zhí)行一個分支
- if(條件){
滿足條件要執(zhí)行的代碼
} - if(條件){
滿足條件會執(zhí)行的代碼
}else{
不滿足條件會執(zhí)行的代碼
} - if(條件1){
滿足條件1會執(zhí)行的代碼
}else if(條件2){
滿足條件2會執(zhí)行的代碼
}else if(條件3){
滿足條件3會執(zhí)行的代碼
}
....
else{
以上條件都不滿足會執(zhí)行的代碼
}
接下來我們通過代碼來舉例子
/*
1.從控制臺輸入成績凌唬,當(dāng)成績超過90分(包含90),輸出成績優(yōu)秀漏麦。
*/
//scanner暫時可以理解為客税,可以從控制臺輸入內(nèi)容的工具况褪,后面講面向?qū)ο笤倬唧w講解,只需要創(chuàng)建一次該工具更耻,后續(xù)可以重復(fù)使用
Scanner scanner = new Scanner(System.in);
//此處只是在輸出之前的提示测垛,可以在此內(nèi)容的下方輸入內(nèi)容,會看到光標(biāo)在閃爍
System.out.println("請輸入成績:");
/*
從控制臺輸入內(nèi)容秧均,由于是nextInt(),所以只能輸入整型數(shù)食侮,
然后將輸入的值賦值給score,點(diǎn)擊回車目胡,結(jié)束輸入锯七。
*/
int score = scanner.nextInt();
//當(dāng)你輸入的數(shù)值比90分大,那就會輸出內(nèi)容誉己,如果沒有比90分大眉尸,就不會看到任何內(nèi)容輸出到控制臺
if(score >= 90) {
System.out.println("成績優(yōu)秀");
}
//上面的驗(yàn)證完畢,就可以把if部分注釋掉巨双,然后接著往下寫
/*
當(dāng)我們輸入的值比90大噪猾,就會執(zhí)行if中的代碼,否則炉峰,就執(zhí)行else中的代碼畏妖;
這里要么執(zhí)行if中的代碼,要么執(zhí)行else中的代碼疼阔,不會兩個分支中都執(zhí)行戒劫;
*/
if(score >= 90) {
System.out.println("成績優(yōu)秀");
}else{
System.out.println("成績不到90分");
}
//驗(yàn)證完畢之后,將if...else代碼注釋掉婆廊,咱們接著
//分?jǐn)?shù)在90-100之間
if(score >= 90 && score <= 100) {
System.out.println("成績優(yōu)秀");
}else if(score >= 80 && score <= 90){
System.out.println("成績良好");
}else if(score >= 70 && score <= 80){
System.out.println("成績中等");
}else if(score >= 60 && score <= 70){
System.out.println("成績及格");
}else if(score < 60){
System.out.println("你的進(jìn)步空間很大");
}
/*
滿足上述那個條件就會執(zhí)行該分支中的代碼迅细,
這里有人注意到了,如果我輸入90淘邻,既滿足第一個分支茵典,也滿足第二個分支,
那么該執(zhí)行那個分支宾舅?還是說兩個都執(zhí)行统阿?此處還是只會執(zhí)行一個分支,
自上而下筹我,先滿足那個條件扶平,就執(zhí)行該分支中的代碼,
下面的分支不會再執(zhí)行蔬蕊。例如结澄,上面滿足了if分支,就不會再執(zhí)行后續(xù)所有的else if。
*/
2.2 switch
switch的形式為:
此處的條件只能是 byte麻献、short们妥、int、char勉吻、String监婶、枚舉,不能是其它類型的值
前面四種類型咱們都學(xué)過了餐曼,String類型压储,實(shí)際上就是咱們每次打印內(nèi)容時,
雙引號內(nèi)容源譬;叫做字符串集惋,后面面向?qū)ο蟛糠謺敿?xì)講解。
switch(條件){
case 值1:
條件和值1相等時執(zhí)行的代碼
break;
case 值2:
條件和值2相等時執(zhí)行的代碼
break;
....
default:
以上case都不滿足時踩娘,執(zhí)行的代碼
}
下面我們通過代碼來實(shí)現(xiàn)下
/*
此處的案例是我們輸入的數(shù)字是多少刮刑,就輸出星期幾,如果超出范圍
就輸出 輸入有誤
*/
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入內(nèi)容");
int week = scanner.nextInt();
switch(week){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("輸入有誤");
}
/*
此處你輸入的數(shù)字在1-7之間养渴,就會輸出對應(yīng)的星期幾雷绢,如果不在1-7之間,
就會輸出輸入有誤
*/
/*
這里理卑,代碼執(zhí)行期間翘紊,只有執(zhí)行到break才會停止,如果沒有break藐唠,代碼會
一直往下執(zhí)行帆疟;例如,case 1:后面沒有break宇立,那么當(dāng)你輸入1踪宠,就會輸出星期一,
星期二妈嘹,在星期二后面有break柳琢,就會停止。
*/
好了润脸,到這為止柬脸,我們的本章就結(jié)束了