簡體   English   中英

在Java中是否存在沒有else部分的條件運算符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM