java三目表達式
㈠ java中三目運算符
先學java的叫它,三元運算符;先學c的叫它三目運算符
即( ?: )
如名字表示的三元運算符需要三個操作數。
語法為:條件表達式?表達式1:表達式2。
說明:問號前面的位置是判斷的條件,判斷結果為bool型,為true時調用表達式1,為false時調用表達式2。
其邏輯為:「如果為真執行第一個,否則執行第二個。」
㈡ java 四個點是什麼特殊運算符
Java雙冒號(::)
該運算符在Java 8中被用作方法引用(method reference),方法引用是與lambda表達式相關的一個重要特性。它提供了一種不執行方法的方法。為此,方法引用需要由兼容的函數介面組成的目標類型上下文。
大致意思是,使用lambda表達式會創建匿名方法, 但有時候需要使用一個lambda表達式只調用一個已經存在的方法(不做其它), 所以這才有了方法引用!
以下是Java 8中方法引用的一些語法:
靜態方法引用(static method)語法:classname::methodname 例如:Person::getAge
對象的實例方法引用語法:instancename::methodname 例如:System.out::println
對象的超類方法引用語法: super::methodname
類構造器引用語法: classname::new 例如:ArrayList::new
數組構造器引用語法: typename[]::new 例如: String[]:new
㈢ java三目運算符
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、根據三目運算符的岩磨拿從右到左的結合性,我是這樣劃分的
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中的一個值。
以上純屬個人理解。沒搞清楚你這個演算法到底是什麼意義。。。。還有你的compare()方法不能聲明為靜態。