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