淺談Java三目運算
三目條件運算公式為 x?y:z 其中x的運算結果為boolean類型,先計算x的值,若為true,則整個三目運算的結果為表達式y(tǒng)的值,否則整個運算結果為表達式z的值
例:String s="";
String x="默認值";
s=s.isEmpty()?x:s;
這段代碼的意思是:先判斷s是否為空(結果是空),然后執(zhí)行s=x,即執(zhí)行x
再來一個復雜點的
class Dates {
int year,month,day;
Dates(int x,int y,int z){
year=x;
month=y;
day=z;
}
public static int compare(Dates a){
return year>a.year?1
:year<a.year?-1
:month>a.month?1
:month<a.month?-1
:day>a.day?1
:day<a.day?-1:0;
}
1、三目運算符 (表達式1)?(表達式2):(表達式3),計算方法是這樣的:表達式1是一個邏輯表達式,如果其值為true,則整個表達式的值為表達式2的值,否則為表達式3的值
2、例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);結果為i = 8.因為5 > 3為true,所以i = 5 + 3.
3、根據(jù)三目運算符的從右到左的結合性,我是這樣劃分的
year > a.year ? 1 : (year < a.year ? -1 : (month > a.month ? 1 : (month < a.month ? -1 : (day > a.day ? 1 : (day < a.day ? -1 : 0)))));
所以應該從最右邊的那個表達式開始計算,結果應該是1、0、-1中的一個值。
以上純屬個人理解。沒搞清楚你這個算法到底是什么意義。。。。
請您花一點時間將文章分享給您的朋友或者留下評論。我們將會由衷感謝您的支持!
相關文章
Java 數(shù)據(jù)結構與算法系列精講之哈希算法實現(xiàn)
哈希表本質是一種(key,value)結構,由此我們可以聯(lián)想到,能不能把哈希表的key映射成數(shù)組的索引index呢?如果這樣做的話那么查詢相當于直接查詢索引,查詢時間復雜度為O(1),其實這也正是當key為int型時的做法,將key通過某種做法映射成index,從而轉換成數(shù)組結構2022-02-02
mybatis+lombok出現(xiàn)java.lang.IndexOutOfBoundsException錯誤及解決
在使用MyBatis和Lombok時,如果遇到java.lang.IndexOutOfBoundsException問題,是因為MyBatis在嘗試將查詢結果封裝成Java對象時,找不到構造函數(shù)中對應的字段,這通常是由于Lombok的@Builder注解生成了全參構造函數(shù)2025-02-02

