三目條件運算公式為 x?y:z 其中x的運算結果為boolean類型,先計算x的值,若為true,則整個三目運算的結果為表達式y的值,否則整個運算結果為表達式z的值
例:String s="";
String x="默認值";
s=s.isEmpty()?x:s;
這段代碼的意思是:先判斷s是否為空(結果是空),然后執行s=x,即執行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、根據三目運算符的從右到左的結合性,我是這樣劃分的
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中的一個值。
以上純屬個人理解。沒搞清楚你這個算法到底是什么意義。。。。
請您花一點時間將文章分享給您的朋友或者留下評論。我們將會由衷感謝您的支持!