Java基础重温_02:运算符、三元运算符案例(2只老虎、3个和尚)、键盘录入(Scanner类)、控制流程语句、控制流程语句案例(奇偶数、考试奖励)
摘要
Java基礎(chǔ)重溫_02:
運(yùn)算符(算術(shù)運(yùn)算、+操作、賦值運(yùn)算、自增自減、關(guān)系運(yùn)算(比較)、邏輯運(yùn)算、短路邏輯運(yùn)算、三元運(yùn)算)
三元運(yùn)算符案例(2只老虎:2個(gè)變量比較、三個(gè)和尚:3個(gè)變量比較)
鍵盤(pán)錄入(Scanner類(lèi)、三元運(yùn)算符案例結(jié)合鍵盤(pán)錄入)
控制流程語(yǔ)句(if結(jié)構(gòu)、if…else結(jié)構(gòu)、if…else…if結(jié)構(gòu))
控制流程語(yǔ)句案例
一、運(yùn)算符
運(yùn)算符是對(duì)常量或者變量進(jìn)行操作的符號(hào)。
運(yùn)算符表達(dá)式:通過(guò)運(yùn)算符連接起來(lái)的式子
1、算術(shù)運(yùn)算符
加、減、乘、除、取余/取模
代碼示例
public class OperatorDemo01 {public static void main(String[] args) {//定義兩個(gè)變量int a = 6;int b = 4;2 / 13 = 0....24/10System.out.println(a + b); //10System.out.println(a - b); //2System.out.println(a * b); //24System.out.println(a / b); //1 注意:結(jié)果是1 不是1.5 被除數(shù)以及除數(shù)都是整數(shù),結(jié)果也是整數(shù)System.out.println(a % b); // 2 6 / 4 = 1......2//除法得到的是商,取余得到是余數(shù)6 /5 = 1.....1//整數(shù)相除只能得到整數(shù),要想得到小數(shù),必須有浮點(diǎn)數(shù)的參與System.out.println(6.0 / 4); // 1.5} }數(shù)據(jù)類(lèi)型自動(dòng)提升(算術(shù)表達(dá)式)
算術(shù)表達(dá)式中包含多個(gè)基本數(shù)據(jù)類(lèi)型的時(shí)候,整個(gè)表達(dá)式的類(lèi)型會(huì)自動(dòng)進(jìn)行提升。
因?yàn)樵贘ava里面,進(jìn)行運(yùn)算的時(shí)候,只能有一種數(shù)據(jù)類(lèi)型。
提升規(guī)則
- byte,short,char將被提升為int
- 整個(gè)表達(dá)式的類(lèi)型自動(dòng)提升到表達(dá)式中最高等級(jí)操作數(shù)同樣的類(lèi)型。
- 等級(jí)順序:byte,short,char->int->long->float->double
2、+操作
字符的+操作
public class OperatorDemo02 {public static void main(String[] args) {//定義兩個(gè)變量int i = 10;char c = 'A'; //'A'的值是65c = 'a'; //'a'的值是97c = '0'; //'0'的值是48System.out.println(i + c);int d = i + c; //int 類(lèi)型 和 char類(lèi)型進(jìn)行運(yùn)算 最高等級(jí)類(lèi)型為intdouble e = 10 + 13.14; // int類(lèi)型和 double類(lèi)型進(jìn)行運(yùn)算 最高等級(jí)類(lèi)型為double} }字符+操作原理
字符在進(jìn)行 “+” 操作的時(shí)候,是拿字符在計(jì)算機(jī)底層對(duì)應(yīng)的數(shù)值來(lái)進(jìn)行計(jì)算的(通過(guò)編碼表查詢(xún)字符對(duì)應(yīng)的底層數(shù)值)
編碼表
計(jì)算機(jī)底層使用二進(jìn)制運(yùn)算,所以文字和符號(hào)必須轉(zhuǎn)換成二進(jìn)制數(shù)才能被計(jì)算機(jī)識(shí)別,編碼表就是將文字等符號(hào)編成對(duì)應(yīng)的數(shù)的表格,因?yàn)槎M(jìn)制記錄起來(lái)比較麻煩,所以使用十進(jìn)制數(shù)進(jìn)行文字編碼。
世界上第一張編碼表ASCII(美國(guó)標(biāo)準(zhǔn)信息交換碼)。常用編碼表都兼容ASCII碼表。
常用的編碼:
ASCII編碼:美國(guó)標(biāo)準(zhǔn)信息交換碼,世界上第一張編碼表。
GB2312編碼:簡(jiǎn)體中文編碼,對(duì)常用漢字進(jìn)行了編碼,兼容ASCII。
GBK:加強(qiáng)版的中文編碼表,對(duì)更多漢字進(jìn)行了編碼,兼容ASCII
UTF-8編碼:萬(wàn)國(guó)碼表,常作為瀏覽器上的網(wǎng)頁(yè)編碼,可以統(tǒng)一顯示各國(guó)文字,兼容ASCII。
字符串的+操作
public class OperatorDemo03 {public static void main(String[] args) {System.out.println("it" + "heima"); // itheimaSystem.out.println("itheima" + 666); // itheima666System.out.println(666 + "itheima"); // 666itheimaSystem.out.println("黑馬" + 6 + 66); // 黑馬666System.out.println(1 + 99 + "年黑馬"); // 100年黑馬} }1、當(dāng)“+”操作中出現(xiàn)字符串時(shí),這個(gè)“+”是字符串連接符**,而不是算術(shù)運(yùn)算 ,拼接的結(jié)果是字符串。例如: “itheima”+666 ->“itheima666”
2、在“+”操作中,如果出現(xiàn)了字符串,就是連接運(yùn)算符,否則就是算術(shù)運(yùn)算符。當(dāng)連續(xù)進(jìn)行“+”操作時(shí),從左往右逐個(gè)執(zhí)行。 例如: 1 + 99 + “年黑馬” -> “100年黑馬”
小結(jié)
一個(gè)表達(dá)式里面,如果沒(méi)有碰到字符串,前面的+號(hào)表示的都是算術(shù)運(yùn)算符,然后,一旦碰到了字符串之后,后面的+號(hào)表示的都是拼接
4、賦值運(yùn)算符
賦值運(yùn)算符的特點(diǎn)(隱含強(qiáng)制類(lèi)型轉(zhuǎn)換)
擴(kuò)展的賦值運(yùn)算符隱含了強(qiáng)制類(lèi)型轉(zhuǎn)換
5、自增自減運(yùn)算符
自增運(yùn)算符:變量本身+1
++自減運(yùn)算符:變量本身-1
--使用格式
++和–可以直接放在變量的前面或者后面。
放在前面叫前自增/前自減
放在后面叫后自增/后自減
自增自減獨(dú)立運(yùn)算、與其他操作數(shù)運(yùn)算的區(qū)別
自增自減獨(dú)立運(yùn)算時(shí)
前自增與后自增沒(méi)有任何的區(qū)別。
? int a = 10;? a++;System.out.println(a); //11? ++a;System.out.println(a); //12自增自減與其他操作數(shù)運(yùn)算時(shí)區(qū)別
后自增/自減: 先給別人去使用,然后再自增/自減。
int a = 10; int b = a++; System.out.println(a); //11 System.out.println(b); //10前自增/自減: 先自增/自減,然后再給別人去使用
int a = 10; int b = ++a; System.out.println(a); //11 System.out.println(b); //116、關(guān)系運(yùn)算符(比較運(yùn)算符)
等于、不等于、大于、大于等于、小于、小于等于。
運(yùn)算的結(jié)果要么是true 要么是false
| == | 等于 | a==b,判斷a和b的值是否相等,成立為true,不成立為false |
| !=(!非) | 不等于 | a!=b,判斷a和b的值是否不相等,成立為true,不成立為false |
| > | 大于 | a>b,判斷a是否大于b,成立為true,不成立為false |
| >= | 大于等于 | a>=b,判斷a是否大于等于b,成立為true,不成立為false |
| < | 小于 | a<b,判斷a是否小于b,成立為true,不成立為false |
| <= | 小于等于 | a<=b,判斷a是否小于等于b,成立為true,不成立為false |
“==”與“=”的區(qū)別
“==”表示的是判斷兩個(gè)值是否相等,
“=”表示的是賦值
7、邏輯運(yùn)算符
邏輯與、邏輯或、邏輯異或、邏輯非
作用:連接關(guān)系表達(dá)式,或連接布爾類(lèi)型的常量和變量
運(yùn)算結(jié)果要么是true 要么是false
| & | 邏輯與 | a&b,a和b都是true,結(jié)果為true,否則為false |
| | | 邏輯或 | a|b,a和b都是false,結(jié)果為false,否則為true |
| ^ | 邏輯異或 | a^b,a和b結(jié)果不同為true,相同為false |
| ! | 邏輯非 | !a,結(jié)果和a的結(jié)果正好相反 |
8、短路邏輯運(yùn)算符
短路與、短路或
| && | 短路與 | 作用和&相同,但是有短路效果 如果左邊為false就不會(huì)運(yùn)行右邊的 |
| || | 短路或 | 作用和|相同,但是有短路效果 如果左邊為T(mén)RUE 就不會(huì)運(yùn)行右邊的 |
邏輯運(yùn)算符和短路邏輯運(yùn)算符區(qū)別:
1、邏輯與&,無(wú)論左邊真假,右邊都要執(zhí)行。
短路與&&,如果左邊為真,右邊執(zhí)行;如果左邊為假,右邊不執(zhí)行。
2、邏輯或|,無(wú)論左邊真假,右邊都要執(zhí)行。
短路或||,如果左邊為假,右邊執(zhí)行;如果左邊為真,右邊不執(zhí)行。
8、三元運(yùn)算符
三元表達(dá)式的格式:
數(shù)據(jù)類(lèi)型 變量名 = 判斷表達(dá)式 ? 表達(dá)式1 : 表達(dá)式2運(yùn)行流程:首先計(jì)算關(guān)系表達(dá)式的值,如果是true,表達(dá)式1的值就是運(yùn)算結(jié)果;如果是false,表達(dá)式2的值就是運(yùn)算結(jié)果
代碼示例
public class OperatorDemo {public static void main(String[] args) {//定義兩個(gè)變量int a = 10;int b = 20;// 獲取兩個(gè)數(shù)中較小的值int min = a > b ? b : a;//int min = a < b ? a : b;} }注意:使用三元運(yùn)算符的時(shí)候一定需要定義變量接收結(jié)果或者是直接使用結(jié)果。
二、三元運(yùn)算符案例
1、兩只老虎(兩個(gè)變量比較)
需求
使用三元運(yùn)算符去判斷兩只老虎的體重是否相等,其中一只老虎體重是180kg,另外一只是200kg
解題步驟
代碼實(shí)現(xiàn)
public class OperatorTest01 {public static void main(String[] args) {//1:定義兩個(gè)變量用于保存老虎的體重,單位為kg,這里僅僅體現(xiàn)數(shù)值即可。int weight1 = 180;int weight2 = 200;//2:用三元運(yùn)算符實(shí)現(xiàn)老虎體重的判斷,體重相同,返回true,否則,返回false。boolean b = weight1 == weight2 ? true : false;//3:輸出結(jié)果System.out.println("b:" + b);} }2、三個(gè)和尚(三個(gè)變量比較)
需求
使用三元運(yùn)算符去求三個(gè)和尚的最高身高,其中第一個(gè)和尚身高是150cm,第二個(gè)和尚身高是210cm,第三個(gè)和尚身高是165cm
解題步驟
代碼實(shí)現(xiàn)
public class OperatorTest02 {public static void main(String[] args) {//1:定義三個(gè)變量用于保存和尚的身高,單位為cm,這里僅僅體現(xiàn)數(shù)值即可。int height1 = 150;int height2 = 210;int height3 = 165;//2:用三元運(yùn)算符獲取前兩個(gè)和尚的較高身高值,并用臨時(shí)身高變量保存起來(lái)。int tempHeight = height1 > height2 ? height1 : height2;//3:用三元運(yùn)算符獲取臨時(shí)身高值和第三個(gè)和尚身高較高值,并用最大身高變量保存。int maxHeight = tempHeight > height3 ? tempHeight : height3;//4:輸出結(jié)果System.out.println("maxHeight:" + maxHeight);} }三、鍵盤(pán)錄入(Scanner類(lèi))
接收鍵盤(pán)輸入的數(shù)據(jù)要使用java里面提供的Scanner類(lèi)
Scanner類(lèi)使用步驟
1、導(dǎo)包。導(dǎo)包必須放在類(lèi)上邊
import java.util.Scanner;2、創(chuàng)建對(duì)象。
Scanner sc = new Scanner(System.in); // sc 是變量名,可以改 其他的不可以改3、接收數(shù)據(jù)。
int x = sc.nextInt()調(diào)用的方法
接收數(shù)字:nextInt(),nextDouble(),…
接收字符串:next()
代碼實(shí)現(xiàn)
//導(dǎo)包 import java.util.Scanner; public class ScannerDemo {public static void main(String[] args) {//創(chuàng)建對(duì)象Scanner sc = new Scanner(System.in);//接收數(shù)據(jù)int x = sc.nextInt();//輸出數(shù)據(jù)System.out.println("x:" + x);} }小結(jié)
1、Scanner的方法簡(jiǎn)單說(shuō)明
nextlnt():只讀取int值,只能讀取整數(shù)類(lèi)型的數(shù)據(jù),如果輸入了非整型的數(shù)據(jù)(浮點(diǎn)型字符串等)就會(huì)報(bào)錯(cuò)。
2、next()和nextLine()的區(qū)別
next():只讀取輸入直到空格。不能讀取兩個(gè)由空格或符號(hào)隔開(kāi)的單詞。
nextLine(): 讀取輸入,包括單詞之間的空格和除回車(chē)以外的所有符號(hào)
更多方法查api文檔
四、三個(gè)和尚升級(jí)版(結(jié)合Scanner類(lèi))
需求
使用三元運(yùn)算和數(shù)據(jù)輸入兩個(gè)知識(shí)點(diǎn)完成比較三個(gè)和尚的最高身高
解題步驟
代碼實(shí)現(xiàn)
import java.util.Scanner;public class ScannerTest {public static void main(String[] args) {//身高未知,采用鍵盤(pán)錄入實(shí)現(xiàn)。首先導(dǎo)包,然后創(chuàng)建對(duì)象。Scanner sc = new Scanner(System.in);//鍵盤(pán)錄入三個(gè)身高分別賦值給三個(gè)變量。System.out.println("請(qǐng)輸入第一個(gè)和尚的身高:");int height1 = sc.nextInt();System.out.println("請(qǐng)輸入第二個(gè)和尚的身高:");int height2 = sc.nextInt();System.out.println("請(qǐng)輸入第三個(gè)和尚的身高:");int height3 = sc.nextInt();//用三元運(yùn)算符獲取前兩個(gè)和尚的較高身高值,并用臨時(shí)身高變量保存起來(lái)。int tempHeight = height1 > height2 ? height1 : height2;//用三元運(yùn)算符獲取臨時(shí)身高值和第三個(gè)和尚身高較高值,并用最大身高變量保存。int maxHeight = tempHeight > height3 ? tempHeight : height3;//輸出結(jié)果。System.out.println("這三個(gè)和尚中身高最高的是:" + maxHeight +"cm");} }五、控制流程語(yǔ)句
順序結(jié)構(gòu)語(yǔ)句
從上到下按照代碼的順序去執(zhí)行的語(yǔ)句
執(zhí)行流程
代碼示例
public class OrderDemo {public static void main(String[] args) {System.out.println("開(kāi)始");System.out.println("語(yǔ)句A");System.out.println("語(yǔ)句B");System.out.println("語(yǔ)句C");System.out.println("結(jié)束");} }1、if 結(jié)構(gòu)
格式
if(關(guān)系表達(dá)式){語(yǔ)句體1; }//關(guān)系表達(dá)式,即括號(hào)最終結(jié)果為true/false if(true){ ? 語(yǔ)句體1; }執(zhí)行流程
2、if…else 結(jié)構(gòu)
格式
if(關(guān)系表達(dá)式){語(yǔ)句體1; }else{語(yǔ)句體2; }執(zhí)行流程
3、if…else…if 結(jié)構(gòu)
格式
if(關(guān)系表達(dá)式1){語(yǔ)句體1; }else if(關(guān)系表達(dá)式2){語(yǔ)句體2; } ..... else{語(yǔ)句體n + 1; }執(zhí)行流程
六、控制流程練習(xí)案例
1、奇偶數(shù)案例(if…else)
需求
使用if…else的方式去判斷一個(gè)整數(shù)是基數(shù)還是偶數(shù)
解題步驟
代碼實(shí)現(xiàn)
import java.util.Scanner;public class IfTest01 {public static void main(String[] args) {//為了體現(xiàn)任意給出一個(gè)整數(shù),采用鍵盤(pán)錄入一個(gè)數(shù)據(jù)。(導(dǎo)包,創(chuàng)建對(duì)象,接收數(shù)據(jù))Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入一個(gè)整數(shù):");int number = sc.nextInt();//判斷整數(shù)是偶數(shù)還是奇數(shù)要分兩種情況進(jìn)行判斷,使用if..else結(jié)構(gòu) //判斷是否偶數(shù)需要使用取余運(yùn)算符實(shí)現(xiàn)該功能 number % 2 == 0//根據(jù)判定情況,在控制臺(tái)輸出對(duì)應(yīng)的內(nèi)容if(number%2 == 0) {System.out.println(number + "是偶數(shù)");} else {System.out.println(number + "是奇數(shù)");}} }2、考試獎(jiǎng)勵(lì)案例(if…else…if)
目標(biāo)
使用if…else…if的結(jié)構(gòu)完成考試獎(jiǎng)勵(lì)
解題步驟
代碼實(shí)現(xiàn)
import java.util.Scanner;public class IfTest02 {public static void main(String[] args) {//小明的考試成績(jī)未知,可以使用鍵盤(pán)錄入的方式獲取值Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入一個(gè)分?jǐn)?shù):");int score = sc.nextInt();//由于獎(jiǎng)勵(lì)種類(lèi)較多,屬于多種判斷,采用if...else...if格式實(shí)現(xiàn)//為每種判斷設(shè)置對(duì)應(yīng)的條件//為每種判斷設(shè)置對(duì)應(yīng)的獎(jiǎng)勵(lì)/*if(score>=95 && score<=100) {System.out.println("山地自行車(chē)一輛");} else if(score>=90 && score<=94) {System.out.println("游樂(lè)場(chǎng)玩一次");} else if(score>=80 && score<=89) {System.out.println("變形金剛玩具一個(gè)");} else {System.out.println("胖揍一頓");}*///數(shù)據(jù)測(cè)試:正確數(shù)據(jù),邊界數(shù)據(jù),錯(cuò)誤數(shù)據(jù)if(score>100 || score<0) {System.out.println("你輸入的分?jǐn)?shù)有誤");} else if(score>=95 && score<=100) {System.out.println("山地自行車(chē)一輛");} else if(score>=90 && score<=94) {System.out.println("游樂(lè)場(chǎng)玩一次");} else if(score>=80 && score<=89) {System.out.println("變形金剛玩具一個(gè)");} else {System.out.println("胖揍一頓");}} }總結(jié)
以上是生活随笔為你收集整理的Java基础重温_02:运算符、三元运算符案例(2只老虎、3个和尚)、键盘录入(Scanner类)、控制流程语句、控制流程语句案例(奇偶数、考试奖励)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Flink任务链Operator Cha
- 下一篇: Oracle等待事件(一)—— latc