PDF(Portable Document Format)是一種常用的文檔格式,具有跨平臺相容性、保真性、安全性和交互性等特點。我們日常生活工作中的合同、報告、論文等通常都採用PDF格式,以確保文檔在不同的操作系統(例如 Windows、Mac、Linux)和設備上被查看時都能保持外觀的一致性。 P ...
一、三元運算符的使用
三元運算符(也稱作三目運算符),使用:
和?
表示,其格式為:布爾表達式 ? 表達式1 : 表達式2
- 如果布爾表達式的計算結果是
true
,那麼執行表達式1;否則,如果布爾表達式的計算結果是false
,則執行表達式2。 - 表達式1和表達式2計算結果的數據類型必須要和左側變數定義的數據類型保持一致。例如:表達式1和表達式2的計算結果都是
double
類型,那麼左側定義的變數類型也是double
。
以下是三元運算符作用原理圖:
以下是三元運算符在代碼中的使用:
/**
* 三元運算符的使用
*
* @author ZhaoCong
* @date 2023-10-25 11:57:21
*/
public class Ternary {
public static void main(String[] args) {
byte byteValue1 = 20;
byte byteValue2 = 30;
byte result1 = byteValue1 > byteValue2 ? byteValue1 : byteValue2;
System.out.println("result1 = " + result1);
double doubleValue1 = 40.13;
double doubleValue2 = 30.28;
double result2 = doubleValue1 == doubleValue2 ? doubleValue1 : doubleValue2;
System.out.println("result2 = " + result2);
String strValue1 = "";
String result3 = strValue1.length() == 0 ? "strValue1的長度是0" : "strValue1的長度不是0";
System.out.println("result3 = " + result3);
}
}
運行結果:
三元運算符可以嵌套使用,但不推薦,原因是可讀性變差。
String strValue = "iCode504";
int length = strValue.length();
// 不推薦嵌套的寫法
String result = length > 0 ? length < 10 ? "strValue的長度在0~10之間" : "strValue的長度超過10" : "strValue的長度為0";
System.out.println("result = " + result);
嵌套式寫法做進一步簡化處理:
String strValue = "iCode504";
int length = strValue.length();
String result = length > 0 && length < 10 ? "strValue的長度在0~10之間" : "strValue的長度不在0~10之間";
System.out.println(result);
二、三元運算符和if語句的區別
共同點:三元運算符和if
語句的作用都是用作條件判斷。但二者也存在一些差別:
1. 語法層面:在大多數情況下,三元運算符語法是一行語句,if
語句可能是多行。例如:判斷一個字元串的長度是否為0,以下分別是三元運算符和if
語句的寫法:
// 三元運算符寫法
String strValue = "iCode504";
String result = strValue.length() == 0 ? "strValue的長度為0" : "strValue的長度不為0";
// if寫法
String strValue = "iCode504";
String result;
if (strValue.length() == 0) {
result = "strValue的長度為0";
} else {
result = "strValue的長度不為0";
}
2. 代碼可讀性:對於簡單的條件判斷,使用三元運算符確實可以簡化代碼,但是如果是複雜條件或者嵌套,那麼三元運算符會讓代碼變得更加複雜難以理解。
3. 靈活性:if
語句中可以在代碼塊中放入更多的表達式,但是三目運算符的表達式只能存在一個。
總體來說,三目運算符和if
語句都有各自的優點和使用場景。在簡單的情況下,使用三目運算符比較方便;在複雜情況下,使用if
語句更合適。
三、運算符的優先順序
前面學過和很多的運算符:例如算術運算符、比較運算符、邏輯運算符等等,如果這些運算符進行混合運算時,存在著一個優先順序,即誰先計算,誰後計算的問題。數學中存在這樣一條規定:先乘除,後加減。也就是說,乘和除是同一級別,二者的計算級別要比加和減的級別高。這條規定在Java中也完全適用。
以下是運算符的優先順序順序表(由高到低,這張表瞭解即可,不需要額外記憶):
運算符 | 關聯性 |
---|---|
() [] | 從左向右 |
! ~ ++ -- 正負號 | 從右向左 |
* / % | 從左向右 |
+ - | 從左向右 |
<< >> >>> | 從左向右 |
< <= > >= instanceof | 從左向右 |
== != | 從左向右 |
& | 從左向右 |
^ | 從左向右 |
| | 從左向右 |
&& | 從左向右 |
|| | 從左向右 |
?: | 從右向左 |
= += -= *= /= %= &= |= ^= <<= >>= >>>= | 從右向左 |
使用括弧()可以提升運算符的優先順序。例如:
int value1 = 30;
int value2 = 28;
int value3 = 17;
int result1 = value1 * value2 + value3; // 先乘除,後加減
int result2 = value1 * (value2 + value3); // 有括弧的優先計算
原本加號的運算等級要比乘號的等級要低,但是給加法表達式加上括弧以後,加法表達式優先計算,然後再計算乘除法。