第二章 Java基本语法(二)
本文主要內(nèi)容:
運(yùn)算符、if-else、switch-case
一、位運(yùn)算符
運(yùn)算符之五:位運(yùn)算符
每左移一位,相當(dāng)于是在原來(lái)的基礎(chǔ)上乘2.
int i = 21;
System.out.println(“i<<2:”+(i<<2));
輸出:i<<2:84
結(jié)論:
1.位運(yùn)算符操作的都是整形的數(shù)據(jù)
2.<<:在一定范圍內(nèi),每向左移一位,相當(dāng)于*2
3.>>: 在一定范圍內(nèi),每向右移一位,相當(dāng)于/2
交換兩個(gè)變量的值:
方式一:定義臨時(shí)變量
方式二:
num1 = num1+num2; num2 = num1 - num2; num1 = num1 - num2;方式三:位運(yùn)算符
三元運(yùn)算符:
1.結(jié)構(gòu):(條件表達(dá)式)?表達(dá)式1:表達(dá)式2
2.說(shuō)明
①條件表達(dá)式的結(jié)果為boolean類(lèi)型
②根據(jù)條件表達(dá)式真或假,決定執(zhí)行表達(dá)式1還是表達(dá)式2
如果表達(dá)式為true,則執(zhí)行表達(dá)式1,如果表達(dá)式為false,則執(zhí)行表達(dá)式2
③表達(dá)式1和表達(dá)式2要求是一致的
獲取三個(gè)值的最大值
int n1 = 12; int n2 = 30; int n3 = -43; int max1 = (n1>n2) ? n1: n2; int max2 = (max1 > n3) ? max1 : n3 ; System.out.println("三個(gè)數(shù)中的最大值為:"+"max2");]凡是可以使用三元運(yùn)算符的地方,都可以改寫(xiě)成if-else
反之,不成立。
如果程序既可以選擇三元運(yùn)算符,又可以選擇if-else,則優(yōu)先選擇三元運(yùn)算符。原因:簡(jiǎn)潔,執(zhí)行效率高
二、流程控制語(yǔ)句
說(shuō)明:
1.else結(jié)構(gòu)是可選的
2.針對(duì)于條件表達(dá)式:
如果多個(gè)條件表達(dá)式之間是“互斥”關(guān)系(或沒(méi)有交集的關(guān)系),哪個(gè)判斷和執(zhí)行語(yǔ)句聲明在上面還是下面,無(wú)所謂。
3.如果多個(gè)條件表達(dá)式之間有交集的關(guān)系,需要根據(jù)實(shí)際情況,考慮清楚應(yīng)該哪個(gè)結(jié)構(gòu)聲明在上面。
4.如果多個(gè)條件表達(dá)式之間有包含關(guān)系,通常情況下,需要將范圍小的聲明在范圍大的上面。否則,范圍小的就沒(méi)機(jī)會(huì)執(zhí)行了。
5.if-else結(jié)構(gòu)是可以相互嵌套的
第一種:
if(條件表達(dá)式){
執(zhí)行表達(dá)式
}
第二種:二選一
if(條件表達(dá)式){
執(zhí)行表達(dá)式1
}else{
執(zhí)行表達(dá)式2
}
第三種:多選一
if(條件表達(dá)式){
執(zhí)行表達(dá)式1
}else if(條件表達(dá)式){
執(zhí)行表達(dá)式2
}else if{條件表達(dá)式}{
執(zhí)行表達(dá)式2
}
彩票中獎(jiǎng)的程序:
系統(tǒng)生成一個(gè)隨機(jī)兩位數(shù)(10-99),與輸入的數(shù)匹配兩位獎(jiǎng)勵(lì)10000,匹配一位獎(jiǎng)勵(lì)1000,兩個(gè)數(shù)字順序顛倒獎(jiǎng)勵(lì)3000,一個(gè)數(shù)字對(duì)位置不對(duì)獎(jiǎng)勵(lì)500,其他情況無(wú)獎(jiǎng)勵(lì)。
如何從鍵盤(pán)獲取不同類(lèi)型的變量:需要使用Scanner類(lèi)
具體實(shí)現(xiàn)步驟:
1.導(dǎo)包:import java.util.Scanner;
2.Scanner的實(shí)例化:Scanner scan =new Scanner(System.in)
3.調(diào)用Scanner類(lèi)的相關(guān)方法(next()/nextXxx()),來(lái)獲取指定類(lèi)型的變量
注意:
需要根據(jù)相應(yīng)的方法,來(lái)輸入指定類(lèi)型的值。如果輸入的數(shù)據(jù)與要求的類(lèi)型不匹配時(shí),會(huì)報(bào)異常:InputMisMatchException,導(dǎo)致程序終止
我的實(shí)現(xiàn):
代碼:
除了String類(lèi)型寫(xiě)scan.next(); 其它數(shù)據(jù)類(lèi)型都寫(xiě)清楚是什么類(lèi)型的,比如scan.nextInt();
對(duì)于char型的獲取,Scanner沒(méi)有提供相關(guān)的方法,只能夠輸入一個(gè)字符串。
switch-case結(jié)構(gòu)
說(shuō)明:
1.根據(jù)switch表達(dá)式中的值,依次匹配各個(gè)case中的常量。一旦匹配成功,則進(jìn)入相應(yīng)case結(jié)構(gòu)中,調(diào)用其執(zhí)行語(yǔ)句。
當(dāng)調(diào)用完執(zhí)行語(yǔ)句后,則仍然繼續(xù)向下執(zhí)行其他case結(jié)構(gòu)中的執(zhí)行語(yǔ)句,直到遇到break關(guān)鍵字或此switch-case結(jié)構(gòu)末尾為止結(jié)束
2.break可以使用在switch-case 結(jié)構(gòu)中,一旦執(zhí)行到break語(yǔ)句,則跳出switch-case結(jié)構(gòu)。
3.switch結(jié)構(gòu)中的表達(dá)式,只能是如下的6種數(shù)據(jù)類(lèi)型之一:byte、short、char、int、枚舉類(lèi)型(JDK5.0新增)、String類(lèi)型(JDK7.0新增)。
4.break關(guān)鍵字是可選的
5.case之后只能聲明常量,不能聲明范圍
6.default相當(dāng)于if-else結(jié)構(gòu)中的else
default結(jié)構(gòu)是可選的,而且位置是靈活的。
如果switch-case結(jié)構(gòu)中的多個(gè)case的執(zhí)行語(yǔ)句相同,則可以考慮進(jìn)行合并。
7.凡是可以使用switch-case的結(jié)構(gòu),都可以轉(zhuǎn)換為if-else,反之不成立。
8.我們寫(xiě)分支結(jié)構(gòu)是,當(dāng)發(fā)現(xiàn)既可以使用switch-case,(t同時(shí)switch中表達(dá)式的取值情況不太多),又可以使用if-else時(shí),我們優(yōu)先選擇使用switch-case.
原因:switch-case執(zhí)行效率稍高。
編寫(xiě)程序:從鍵盤(pán)上輸入2020年的“month”和“day”,要求通過(guò)程序輸出輸入的日期是2020年的第幾天
import java.util.Scanner; class SwitchCaseTest2 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("請(qǐng)輸入2019年的month:");int month = scan.nextInt();System.out.println("請(qǐng)輸入2019年的day:");int day = scan.nextInt();//定義一個(gè)變量來(lái)保存總天數(shù)int sumDays = 0;switch(month){case 12:sumDays += 30;case 11:sumDays += 31;case 10:sumDays += 30;case 9:sumDays += 31;case 8:sumDays += 31;case 7:sumDays += 30;case 6:sumDays += 31;case 5:sumDays += 30;case 4:sumDays += 31;case 3:sumDays += 28;case 2:sumDays += 31;case 1:sumDays += day;}System.out.println("2019年" + month + "月" + day + "日是當(dāng)年的第" + sumDays + "天");} }總結(jié)
以上是生活随笔為你收集整理的第二章 Java基本语法(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 建筑图纸怎么看?教你查看cad图纸的方法
- 下一篇: 第二章 Java基本语法(三)