Java基礎1-1-2—java基礎語法(運算子)
2、 運算子
2.1 算術運算子
運算子和表示式
運算子:對常量或者變數進行操作的符號
表示式:用運算子把常量或者變數連線起來符合java語法的式子就可以稱為表示式。
不同運算子連線的表示式體現的是不同型別的表示式。
舉例說明:
int a = 10;
int b = 20;
int c = a + b;
+:是運算子,並且是算術運算子
a+b:是表示式,由於+是算術運算子,所以這個表示式叫算術表示式
/:整數相除,結果只能得到整數,如果想要得到帶有小數的結果,必須加入小數(浮點型別)的運算
%(取模)取餘數
注意事項:
/和%的區別:兩個資料做除法,/取結果的商,%取結果的餘數。
整數操作只能得到整數,要想得到小數,必須有浮點數參與運算。
2.2 字元的“+”操作
字元的“+”操作
public class Test{
public static void main(String[] args){
int a = 1;
char b = 'a';
System.out.println(a + b); //98
}
}
a + b的運算中,a為int型別,b為char型別
當(byte short char int)在一起運算的時候,都會提升為int之後,再進行運算
但是,char屬於字元,字元是怎樣提升為int數值的呢?
為什麼要有這樣的碼錶?
'a' --- 97 'A' --- 65 '0' --- 48
2.3 字串的+操作
字串的“+”操作
當+操作中出現字串時,這個+是{字串連線符},而不是算術運算。
在+操作中,如果出現了字串,就是連線運算子,否則就是算術運算。當連續進行"+"操作時,從左到右逐個執行。
public static void main(String[] args){ // 字串可以使用 + 號,跟【任意資料型別】拼接 System.out.println("qwer" + 666); System.out.println("qwer" + true); //從左到右 System.out.println(1 + 99 + "年"); System.out.println("5+5=" + 5 + 5); //已經變成字串拼接了 最後就是5+5=55 System.out.println("5+5=" + (5 + 5)); //提高運算優先順序 }
2.4 案例-數值拆分
需求:鍵盤錄入一個三位數,將其拆分為個位、十位、百位後,列印在控制檯
public class Test{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個三位數");
int num = sc.nextInt();
int ge = num % 10;
int shi = num / 10 % 10;
int bai = num / 100;
System.out.println("整數"+num+"個位為:" + ge);
System.out.println("整數"+num+"十位為:" + shi);
System.out.println("整數"+num+"百位為:" + bai);
}
}
公式總結:
個位:數值 % 10
十位:數值 / 10 % 10
百位:數值 / 10 /10 % 10
千位:數值 / 10 / 10 / 10 % 10
2.5 自增自減運算子
自增自減運算子
++:變數自身+1
--:變數自身-1
++和--既可以放在變數的後邊,也可以放在變數的前面。
注意:單獨使用的時候,++和--無論是放在變數的前邊還是後邊,結果是一樣的
public static void main(String[] args){
int a = 10;
++a;
a++;
}
參與操作:
++在前:先對該變數做自增(++)或者自減(--),然後再拿變數參與操作。
++在後:先將該變數原本的值,取出來參與操作,隨後再進行自增(++),自減(--)。
++和--,只能操作變數不能操作常量
System.out.println(10++); //錯誤
2.6 賦值運算子
賦值運算子
注意事項:
擴充套件的賦值運算子隱含了強制型別轉換
擴充套件賦值運算子:
+= -= *= /= %=
public static void main(String[] args){
int a = 10;
a += 20; //將符號左右兩邊的資料,做加分運算,結果賦值給左邊
System.out.println(a);
}
注意:
public static void main(String[] args){
short a = 1;
a += 1; // a = (short)(a + 1); 注意:擴充套件賦值運算子底層會自帶強轉功能
System.out.println(a);
}
2.7 關係運算符
關係運算符(比較運算子)
> >= < <= == !=
public static void main(String[] args){
System.out.println(10 > 20); //false
}
2.8 邏輯運算子
邏輯運算子概述
在數學中,一個數據x,大於5,小於15,我們可以這樣來進行表示:5<x<15。
在java中,需要把上面的式子先進行拆解,再進行合併表達。
拆解為:x>5和x<15
合併後:x>5&x<15
邏輯運算子作用:用於{整合}多個比較表示式的條件
1、連線多個比較表示式
2、連線true或false
最終得到的結果都是boolean型別的true或false
邏輯運算子分類:
&(與):並且 遇false則false,只有符號左右兩邊同時為true,結果才為true。
|(或):或者 遇true則true,只有符號左邊兩邊同時為false,結果才為false。
!(非):取反 !false=true !!true=true
^(異或):相同為false,不同為true
應用場景:
需求:鍵盤錄入學生成績,如果是90-100之間,程式輸出(優秀)
判斷條件(score >= 90 & score <= 100)
需求:鍵盤錄入工人工號,只要3號5號7號。
public static void main(String[] args){
int x = 10;
System.out.println(x > 5 & x < 15);
}
&其實就是一個邏輯運算子
我們可以這樣說,邏輯運算子,是用來連線關係表示式的運算子。
當然,邏輯運算子也可以直接連線布林型別的常量或者變數。
2.9 短路邏輯運算子
短路邏輯運算子
& 和 &&的區別:
&無論符號左邊是true還是false,右邊都要繼續執行
&&具有短路效果,符號左邊為false的時候,右邊就不執行了。
|和||的區別:
邏輯或|,無論左邊真假,右邊都要執行。
短路或||,如果左邊為假,右邊執行;如果左邊為真,右邊不執行。
2.10 三元運算子
三元運算子
格式:關係表示式?表示式1:表示式2;
執行流程:
首先計算關係表示式的值
如果值為true,取表示式1的值
如果值為false,取表示式2的值
public static void main(String[] args){
int a = 10;
int b = 20;
int max = a > b ? a : b;
System.out.println(max);
}
2.11 案例:三個和尚
需求:一座寺廟裡住著三個和尚,已知他們的升高分別為150cm、210cm、165cm。請用程式實現獲取三個和尚的最高升高。
public static void main(String[] args){
int height1 = 150;
int height2 = 210;
int height3 = 165;
int tempMax = a > b ? a : b;
int max = tempMax > c ? tempMax : c;
System.out.println(max);
int result = a > b ? a : b > c ? a > b ? a : b : c;
System.out.println(result);
}