首先,对以下问题的道歉,我是新来的Java,我已经采取了例如从一本书,但它不能完全解释本身。
我一直在阅读有关的? 运营商和它是如何发挥作用,并根据以下作为一个例子可以借鉴:
class Ternary {
public static void main(String args[]) {
int i, k;
i = 10;
k = i < 0 ? -i : i; // get absolute value of i
System.out.print("Absolute value of ");
System.out.println(i + " is " + k);
i = -10
k = i < 0 ? -i : i; //get absolute value of i
System.out.print("Absolute value of ");
System.out.println(i + " is " + k);
}
}
据我所知,第一部分是如何给出了10分的结果,但我不能按照第二部分是如何给出了10的结果呢?
道歉,如果这显然是显而易见的。
条件运算符用于决定哪两个值中的分配给一个变量。
它的格式为:
键入VARIABLENAME =(布尔条件)? valueIfTrue:valueIfFalse;
在你的情况有:
public static void main(String[] args){
int i, k;
i = -10;
k = i < 0 ? -i : i; //get absolute value of i
System.out.print("Absolute value of ");
System.out.println(i + " is " + k);
}
所以,我们说:
我<0,以及i是等于-10,并且因此小于0。因此,真实条件被分配,其具有-i值。
自 - ( - 10)= - * - 10 = 10 [即负倍减去是加上]时,输出为10。
由于三元运算符计算i < 0
在下面的行代码:
k = i < 0 ? -i : i; //get absolute value of i
如果为真k = -i
存在假k = i
而作为其他mentionned, -(-10) == 10
,我相信这是你想要的,因为你正在试图得到一个数字的绝对值输出,所以如果是负数,打印出它的正值。
设置K的时候,我们具备的条件
i < 0
其次是?,它要求“是我小于0。如果是,它会返回第一个结果(-i),如果它是不是会返回第二个结果(I)。
这意味着同样的事情:
if (i < 0){
k = -i;
else{
k = i;
}
i = -10
k = i < 0 ? -i : i;
是相同的
k = i < 0 ? -(-10) : i;
给你+10
当你写:
k = i < 0 ? -i : i
它解释为
if(i < 0){
k = -i;
} else {
k = i;
}
如此以来,-10是<0,则给定表达式返回 - ( - 10),即10