这 ? (三路)运营商
The ? (three way) Operator
首先,对于以下问题,我很抱歉,我是 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 的结果?
如果这很明显,我们深表歉意。
负数的负数是正数 0 - (-10) = 10
i 被设置为 -10,然后 k 检查 i < 0,它是。
因此它执行第一种情况:
k = -(-10) = 10
设置k时,我们有条件
i < 0
后跟 ?,询问“我是否小于 0。如果是,它将 return 第一个结果 (-i),如果不是,它将 return第二个结果 (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, 给定的表达式returns -(-10), 即10
由于三元运算符在您的以下代码行中计算 i < 0
:
k = i < 0 ? -i : i; //get absolute value of i
如果为真k = -i
否则为假k = i
正如其他人提到的那样,-(-10) == 10
我相信这是你想要的输出,因为你试图获得一个数字的绝对值,所以如果它是负数,打印出它的正值。
条件运算符用于决定将两个值中的哪一个分配给变量。
它采用以下形式:
类型变量名=(布尔条件)? 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);
}
所以,我们说:
i < 0,那么 i 等于 -10,因此小于 0。因此分配了 true 条件,其值为 -i。
因为 -(-10) = -*-10 = 10 [即减乘以减为正],输出为 10。
首先,对于以下问题,我很抱歉,我是 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 的结果?
如果这很明显,我们深表歉意。
负数的负数是正数 0 - (-10) = 10
i 被设置为 -10,然后 k 检查 i < 0,它是。
因此它执行第一种情况:
k = -(-10) = 10
设置k时,我们有条件
i < 0
后跟 ?,询问“我是否小于 0。如果是,它将 return 第一个结果 (-i),如果不是,它将 return第二个结果 (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, 给定的表达式returns -(-10), 即10
由于三元运算符在您的以下代码行中计算 i < 0
:
k = i < 0 ? -i : i; //get absolute value of i
如果为真k = -i
否则为假k = i
正如其他人提到的那样,-(-10) == 10
我相信这是你想要的输出,因为你试图获得一个数字的绝对值,所以如果它是负数,打印出它的正值。
条件运算符用于决定将两个值中的哪一个分配给变量。
它采用以下形式:
类型变量名=(布尔条件)? 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);
}
所以,我们说:
i < 0,那么 i 等于 -10,因此小于 0。因此分配了 true 条件,其值为 -i。
因为 -(-10) = -*-10 = 10 [即减乘以减为正],输出为 10。