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