第二天:運算子
阿新 • • 發佈:2020-10-18
運算子
- 運算子:進行特定操作的符號,例如:+
- 表示式:用運算子來接起的式子,例如: 20+5 又例如:a+
1. 四則運算子
- 加:+
- 減:-
- 乘:*
- 除:/
2.取模(求餘數):%
注意事項:
- 一旦運算當中有不同型別的資料,那麼結果將會是資料範圍大的那種
- 對於一個整數的表示式來說,除法用的是整除,整數除以整數,結果任然是整數。只看商,不看餘數
- 只有對於整數的除法來說,取模運算才有餘數的意義
例項
public class Demo04Operator { public static void main(String[] args) { // 兩個常量之間可以進行數學運算 System.out.println(20 + 30); // 50 // 兩個變數之間也可以進行數學運算 int a = 20; int b = 30; System.out.println(a - b); // -10 // 變數和常量之間可以進行混合使用 System.out.println(a * 10); // 200 int x = 10; int y = 3; int result1 = x / y; System.out.println(result1); // 3 int result2 = x % y; System.out.println(result2); // 1 // int + double --> double + double = double double result3 = x + 2.5; System.out.println(result3); } }
3. 四則運算當中的加號"+"
- 對於數值來說,那就是加法
- 對於字元char來說,在計算之前,char會被提升成為int,然後計算。char型別字元,和int型別數字之間的對照關係表:ASCII、Unicod
- 對於字串String(首寫字母大寫,並不是關鍵字)來說加號代表連線操作
四則運算當中的加號"+" 例項
public class Demo05Plus { public static void main(String[] args) { // 字串型別的變數基本使用 // 資料型別 變數名稱 = 資料值 String str1 = "Hello"; System.out.println(str1); // Hello System.out.println("hello" + "world"); // helloworld String str2 = "java"; // String + int -->String System.out.println(str2 + 20); // java20 // 優先順序問題 // String + int + int // String + int // String System.out.println(str2 + 20 + 30); // java2030 System.out.println(str2 + (20 + 30)); // java50 } }
4. 自增自減運算子
- 自增運算子:++
- 自減運算子:--
- 基本含義:讓一個變數張一個數字1,或者讓一個變數降一個數字1
- 使用格式:寫在變數名稱之前,或者在變數名稱之後,例如:++num,也可以num++
- 使用方法:
- 單獨使用:不和其他任何操作混合,自己成為一個步驟
- 混合使用:和其他操作混合,例如與賦值混合,或者與列印操作混合,等等。。。
- 使用區別
- 在單獨使用的時候,前++和 後++沒有任何區別,也就是:++num;和num++;完全一樣
- 在混合使用時,有巨大區別
- 如果是【前++】,那麼變數立刻馬上+1,然後拿著結果進行使用。【先加後用】
- 如果是【後++】,那麼首先使用變數本來的數值,然後讓變數+1。【先用後加】
注意事項
- 只有變數才能使用自增自減操作,常量不可發生改變,所以不能使用
自增自減例項
public class Demo06Operator {
public static void main(String[] args) {
int num1 = 10;
System.out.println(num1); // 10
++num1; // 單獨使用,前++
System.out.println(num1); // 11
num1++; // 單獨使用,後++
System.out.println(num1); // 12
System.out.println("==============");
// 與列印操作混合使用的時候
int num2 = 20;
// 混合使用,先++,變數立刻馬上變成21,然後列印結果
System.out.println(++num2); // 21
System.out.println(num2); // 21
System.out.println("==============");
int num3 = 30;
// 混合使用,後++,首先使用變數本來的30,然後再讓變數+1得到31
System.out.println(num3++); // 30
System.out.println(num3); // 31
System.out.println("==============");
int num4= 40;
// 和賦值操作混合
int result1 = --num4; // 混合使用,前--,變數立刻馬上-1變成39,然後賦值給result1
System.out.println(result1); // 39
System.out.println(num4); // 39
System.out.println("==============");
int num5 = 50;
// 混合使用,後--,首先把本來的數字50交給result2,然後我自己再-1變成49
int result2 = num5--;
System.out.println(result2); // 50
System.out.println(num5); // 49
System.out.println("==============");
int x = 10;
int y = 20;
int result3 = ++x + y--; // 11 + 20 = 31
System.out.println(result3); // 31
System.out.println(x); // 11
System.out.println(y); // 19
// 30++; // 錯誤
}
}
5. 賦值運算子分為
-
基本運算子,就是一個等號"=",代表將右側的資料交給左側的變數
int a = 30;
-
複合賦值運算子
+= a += 3 相當於 a=a+3 -= b -= 4 相當於 b=b-4 *= c *= 5 相當於 c=c*5 /= d /= 6 相當於 d=d/6 %= e %= 7 相當於 e= e%7
注意事項
-
只有變數才能進行賦值運算,常量不能進行賦值
-
符合運算子其中隱含一個強制型別轉換
賦值運算子 例項
public class Demo07Operator {
public static void main(String[] args) {
int a = 10;
a += 5;
System.out.println(a); // 15
int x = 10;
x %= 3;
System.out.println(x); // 1
// 50 = 30; // 常量不能進行賦值,不能寫在賦值運算子的左邊,錯誤寫法
byte num = 30;
num += 5;
// num = num + 5
// num = byte + int
// num = int + int
// num = int
// num = (byte)int
System.out.println(num); // 35
}
}
6. 比較運算子
- 大於 >
- 小於 <
- 大於等於 >=
- 小於等於 <=
- 相等 == 【兩個等號連寫才是相等,一個等號代表的是賦值】
- 不相等 !=
注意事項
- 比較運算子的結果一定是一個boolean值,成立就是true,不成立就是false
- 如果進行多次判斷,不能進行連線寫
比較運算子 例項
public class Demo08Operator {
public static void main(String[] args) {
System.out.println(10 > 5); // true
int num1 = 10;
int num2 = 12;
System.out.println(num1 < num2); // true
System.out.println(num2 >= 100); // false
System.out.println(num2 <= 100); // true
System.out.println(num2 <= 12); // true
System.out.println("=============");
System.out.println(10 == 10); // true
System.out.println(20 != 25); // true
System.out.println(20 != 20); // false
int x = 2;
// System.out.println(1 < x < 3); // 錯誤
}
}
7.邏輯運算子
- 與(並且)&& 全都是true,才是true,否則就是false
- 或(或者)|| 至少一個是true,就是true;全是false,才是false
- 非(取反)! 本來是true,變成false;本來是false,變成true
注意事項
-
邏輯運算子只能用於Boolean值
-
與、或需要左右各自一個boolean值,但是取反只有一個唯一的一個Boolean值即可
-
與、或兩種運算子,如果有多個條件。可以連續寫
-
與"&&",或"||",具有短路效果,如果根據左邊已經可以判斷得到的最終結果,那麼右邊的程式碼將不再執行,從而節省一定的效能
-
tips:
對於 1 < x < 3的情況,應該拆成兩個部分,然後使用與運算子連線起來 int x = 2; 1 < x && x < 3;
邏輯運算子
public class Demo09Logic {
public static void main(String[] args) {
System.out.println(true && false); // false
System.out.println(true && true); // true
System.out.println("==============");
System.out.println(true || false); // true
System.out.println(true || true); // true
System.out.println(false || false); // false
System.out.println("==============");
System.out.println(true); // true
System.out.println(!true); // false
System.out.println("==============");
int a = 10;
System.out.println(3 > 4 && ++a < 100); // false
System.out.println(a); // 10
System.out.println("==============");
int b = 20;
System.out.println(3 < 4 || ++b < 100); // true
System.out.println(b); // 20
}
}
8. 三元運算子
- 三元運算子:需要三個資料才可以進行的運算子
- 格式:資料型別 變數名稱 = 條件判斷 ? 表示式A : 表示式B
- 流程:
- 首先判斷條件是否成立
- 如果成立為true,那麼表示式A的值賦值給左側的變數
- 如果不成立為false,那麼將表示式B的值賦值給左側的變數
注意事項
- 必須保持表示式A和表示式B都符合左側資料型別的要求
- 三元運算子的結果必須被使用
三元運算子 例項
public class demo10Operator {
public static void main(String[] args) {
int a = 10;
int b = 20;
// 資料型別 變數名稱 = 條件判斷 ? 表示式A :表示式B
// 判斷a>b是否成立,如果成立將a的值賦值給max
int max = a > b ? a : b; // 最大值的變數
System.out.println(max); // 20
// int result = 3>4 ? 2.5 :10; // 錯誤寫法
System.out.println(a > b ? a : b); // 20
// a > b ? a : b; // 錯誤寫法
}
}