[英]Is there a conditional operator without the else part in Java?
我知道您可以在Java中使用如下代碼:
(a > b) ? a : b;
沒有其余部分,是否有類似的東西?
它是一個表達式,而不是語句,這意味着它始終會求值。 如果沒有“其他部分”,則表達式將不會評估測試是否為假。 因此,不,沒有其他就沒有相似之處。
我喜歡使用條件運算符的地方是,您可以分配類似
foo = a > b ? c : d;
閱讀它,您知道foo被分配了一些東西,而不管測試是否正確。 因此,它為您提供了一種方法來指示已分配的值取決於某些測試。
Groovy有一些類似的運算符:
如果左邊的表達式為null,則Elvis運算符?:
將右邊的值分配為默認值。
?.
(如果為null,則安全null運算符)為null。 這對於您有可能為零的事物鏈(例如foo?.bar?.baz
情況非常方便,在這種情況下,如果某些事物為空,您寧願不讓NPE foo?.bar?.baz
,而寧願不鍵入所有的空值檢查。
不,沒有。 這是沒有道理的。
?:
是三元比較運算符-一個表達式。 如果沒有其他語句,則表達式的值是什么? C#有一個簡寫版本??
但這只是語法上的糖,Java根本沒有這樣的東西。
我猜想您正在使用它來為var賦值,我將其稱為“ c”,並且想法是您只想在if語句為true時才賦值。 正常的方式是:
if(a > b) c = a;
但是,如果您真的想使用三元語法,可以編寫:
c = a > b ? a : c;
注意,三元括號是可選的,因此我省略了它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.