Java復習(3)運算符和表達式
表達式是指用運算符連接起來的式子叫做表達式。如:20+5,a+b。
Java世界中運算符主要分為以下幾類:算術運算符、賦值運算符、比較運算符、邏輯運算符和三元運算符。
一、 算術運算符
加(+):四則運算的加法
減(-):四則運算的劍法
乘(*):四則運算的乘法
除(/):四則運算的除法
取模(%):常說的求余數
註意事項:
- 一旦運算當中有不同類型的數據,那麽結果將會是數據類型範圍大的那種。
- 只有對於整數的除法來說,取模運算才有余數的意義。
- 在進行運算時,首先計算得到表達式的結果,然後在進行後續操作。
- 四則運算的加號對於char類型來說,在計算之前,char類型會被提升為int類型,然後在進行計算。
-
對於字符串String類型來說,加號代表字符串連接操作。並且任何數據類型和字符串進行連接操作,結果都會變成字符串。
可以看一下代碼示例:public class TestOperator { public static void main(String[] args){ //兩個常量之間的數學運算 System.out.println(20+30); //兩個變量之間的數學運算 int a = 20; int b = 5; System.out.println(a-b); //並且變量和常量之間可以混合使用 System.out.println(a*10); int x = 10; int y = 3; //因為x和y都是整數,除數的結果也是整數。所以結果會進行截斷。 int result1 = x/y; System.out.println(result1); int result2 = x%y; System.out.println(result2); //浮點數也可以進行運算 double result3 = x + 2.5; System.out.println(result3); } }
算術運算符還有兩種特殊的運算符,就是自增運算符(++)、自減運算符(--)。
基本含義:
自增運算符讓變量的值增加1,自減運算符是讓變量的值減1。
使用格式:
寫在變量名稱前,或者寫在變量名稱之後。如:++num或num++。
使用方式: - 單獨使用:不和其他任何操作混合,自己獨立稱為一個步驟。
- 混合使用: 和其他操作混合,例如與賦值混合,或者與打印操作混合等。
兩種使用方式區別: - 在單獨使用的時候,前++和後++沒有任何區別。也就是說++num和num++結果是完全一樣的。
-
在混合使用的時候,有重大區別:
A. 如果是前++,那麽變量馬上加1,然後拿著結果進行使用。可以稱作,先加後用。
註意事項:
只有變量才能使用自增、自減運算符,常量不可用。
請看以下示例:public class TestPlus { public static void main(String[] args) { //字符串類型的變量基本使用 //數據類型 變量名稱 = 數據值; String str1 = "Hello"; System.out.println(str1); System.out.println("Hello" + "World"); String str2 = "Java"; System.out.println(str2 + 20); //優先級問題 System.out.println(str2 + 20 + 30); //自增自減 int num1 = 10; System.out.println(num1); ++num1;//單獨使用,前++ System.out.println(num1); num1++;//單獨使用,後++ System.out.println(num1); int num2 = 20; //混合使用,前++,變量馬上變為21,然後打印輸出 System.out.println(++num2); System.out.println(num2); int num3 = 30; //混合使用,後++,先使用變量原值30,打印輸出,然後變量加1,變為31. System.out.println(num3++); System.out.println(num3); int num4 = 40; //混合使用,前--,變量馬上變為39,然後賦值result1 int result1 = --num4; System.out.println(result1); System.out.println(num4); int num5 =50; //混合使用,後--,先使用變量原值50,賦值result2,然後變量減1,變為49. int result2 = num5--; System.out.println(result2); System.out.println(num5); int x = 10; int y = 20; int result3 = ++x + y--; System.out.println(result3); System.out.println(x); System.out.println(y); } }
二、 賦值運算符
賦值運算符分為兩種:
一是基本賦值運算符:就是一個等號“=”,代表將右側的數據交給左側的變量。
二是復合賦值運算符:
+=: 例如 a += 1 相當於 a = a + 1
-=: 例如 b -= 4 相當於 b = b - 4
=: 例如 c = 5 相當於 c = c * 5
/=: 例如 d /= 6 相當於 d = d / 6
%=: 例如 e %= 7 相當於 e = e % 7
註意事項: - 只有變量才能使用賦值運算符,常量不能進行賦值。
-
復合賦值運算符其中隱含了一個強制類型轉換。
請看示例:public class TestEqual{ public static void main(String[] args) { int a = 10; a += 5; System.out.println(a); int x = 10; x %= 3; System.out.println(x); byte num = 30; //num += 5 相當於 num = num +5; //也就是byte = byte + int; //右邊表達式會先把byte自動轉換稱為int,最後進行強制轉換成byte. //所以復合賦值運算符幫我們做了一個強制類型轉換 num += 5; System.out.println(num); } }
三、 比較運算符
== 比較符號兩邊數據是否相等,相等結果就是true。
< 比較符號左邊的數據是否小於右邊的數據,如果小於,結果就是true。比較符號左邊的數據是否大於右邊的數據,如果大於,結果就是true。
<= 比較符號左邊的數據是否小於等於右邊的數據,如果小於等於,結果就是true
= 比較符號左邊的數據是否大於等於右邊的數據,如果大於等於,結果就是true。
!= 比較符號兩邊數據是否相等,不相等結果就是true。
註意事項:
- 比較運算符的結果一定是一個boolean值,成立就是true,不成立就是false。
- 如果進行多次判斷,不能連著寫。
public class TestCompare { public static void main(String[] args) { System.out.println(10>5); iint num1 = 10; int num2 = 15; System.out.println(num1 < num2); System.out.println(num1 >= 30); System.out.println(num2 <= 50); System.out.println(num2 <= 15); System.out.println(num2 == 15); System.out.println(num1 != 15); //java不支持連著進行比較,可以使用下節的邏輯比較符進行。 //System.out.println(4 < num1 < 20); } }
四、 邏輯運算符
與 && 全都是true,才是true; 否則就是false
或 || 至少一個是true, 就是true; 全都是false,才是false
非 ! 本來是true,變成false;本來是false,變成true。
註意事項:
- 邏輯運算符只能用於Boolean值。
- 與、或需要左右各自有一個Boolean值,但是取反只要有唯一的一個Boolean值即可。
- 與、或兩種運算符,如果有多個條件,可以連續寫。
- 與、或具有短路效果:如果根據左邊已經可以判斷得到最終結果,那麽右邊的代碼將不再執行,從而節省性能。
五、 三元運算符
Java中根據數據的多少可以分為:
一元運算符: 只需要一個數據就可以進行操作的運算符。例如:取反!、自增++、自減--
二元運算符: 需要兩個數據才可以進行操作的運算符。例如:加減乘除
三元運算符: 需要三個數據才可以進行操作的運算符。
格式: 數據類型 變量名稱 = 條件判斷 ? 表達式A : 表達式B
流程:
首先判斷條件是否成立:
如果成立為true,那麽將表達式A的值賦給左側的變量
如果不成立為false,那麽將表達式B的值賦給左側的變量
註意事項:
- 必須同時保證表達式A和表達式B都符合左側數據類型的要求。
-
三元運算符的結果必須被使用。
public class TestThreeVar { public static void main(String[] args) { int a = 10; int b = 20; int max; //判斷a>b是否成立,如果成立將a的值賦給max,如果不成立將b的值賦給max. max = a > b ? a : b; System.out.println(max); //兩個表達式的值必須同時符合左側數據類型的要求。 //int result = 3 > 4 ? 2.4 : true; //並且三元表達式不能直接使用 //a > b ? a : b } }
Java復習(3)運算符和表達式