的? (三元)运算符(The ? (three way) Operator)

2019-10-22 16:13发布

首先,对以下问题的道歉,我是新来的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的结果呢?

道歉,如果这显然是显而易见的。

Answer 1:

条件运算符用于决定哪两个值中的分配给一个变量。

它的格式为:

键入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。



Answer 2:

由于三元运算符计算i < 0在下面的行代码:

k = i < 0 ? -i : i; //get absolute value of i

如果为真k = -i

存在假k = i

而作为其他mentionned, -(-10) == 10 ,我相信这是你想要的,因为你正在试图得到一个数字的绝对值输出,所以如果是负数,打印出它的正值。



Answer 3:

负的负为正0 - ( - 10)= 10



Answer 4:

设置K的时候,我们具备的条件

i < 0

其次是?,它要求“是我小于0。如果是,它会返回第一个结果(-i),如果它是不是会返回第二个结果(I)。

这意味着同样的事情:

if (i < 0){
    k = -i;
else{
    k = i;
}


Answer 5:

i = -10
k = i < 0 ? -i : i; 

是相同的

k = i < 0 ? -(-10) : i;

给你+10



Answer 6:

当你写:

k = i < 0 ? -i : i

它解释为

if(i < 0){
    k = -i;
} else {
    k = i;
}

如此以来,-10是<0,则给定表达式返回 - ( - 10),即10



Answer 7:

如果I <0,这是我获取设置为-10和则k检查。

因此,执行第一种情况:

K = - ( - 10)= 10



文章来源: The ? (three way) Operator