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