簡體   English   中英

Java代碼中的問號

[英]Question mark in java code

有人可以在以下代碼中解釋問號嗎? INITIAL_PERMANCE也是代碼中的靜態最終常量,但是synatax的最后一行叫什么?

Synapse(AbstractCell inputSource, float permanence) {
    _inputSource = inputSource;
    _permanence = permanence==0.0 ? 
        INITIAL_PERMANENCE : (float)Math.min(1.0,permanence);
}

和:是Java條件運算符的一部分。 有時稱為三元運算符,因為它是Java中唯一帶有3個參數的運算符。

這本質上是一個內聯IF / THEN / ELSE塊。

_permanence = permanence==0.0 ? 
    INITIAL_PERMANENCE : (float)Math.min(1.0,permanence);

可以重寫如下:

if (permanence == 0.0)
    _permanence = INITIAL_PERMANENCE;
else
    _permanence = (float) Math.min(1.0,permanence);

條件運算符的一般形式是

<Test returning a boolean> ? <value for if test is true> : <value for if test is false>

這等效於以內聯方式的if else語句。

   _permanence = 
    {// A kind of anonymous routine for assignment
      if(permanence==0.0)
      { INITIAL_PERMANENCE } 
      else
      { (float)Math.min(1.0,permanence)}
    }

在Oracle站點上有關三元運算符的很好解釋

這是三元運算符。 它像if-else語句一樣工作。

分解后,該語句類似於以下內容:

if(permanence == 0.0) { 
    _permanence = INITIAL_PERMANENCE;
} else {
    _permanence = (float)Math.min(1.0,permanence);
}

在含義很明確的情況下,它的使用受到限制。 三元運算符可能會造成混淆,因此請謹慎使用。

最后一條語句:

(float)Math.min(1.0, permanence)

稱為類型轉換。 您正在將Math.min()的結果強制轉換為浮點數的double值。 您必須閱讀更多有關什么是浮點數的信息才能看到這樣做的價值。

它稱為Java三元運算符(如Hovercraft所述),其用法如下:

type variableName = (statement) ? value if statement is true: value if false;

這是最常用的方式。
[可選變量] =(布爾測試)? (如果為True,則執行此操作):(如果為false,則執行此操作)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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