gpt4 book ai didi

java - Java如何决定三元条件运算符表达式的类型?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:58:53 26 4
gpt4 key购买 nike

谁能解释一下?

public class Test {
public static void main(String[] args) {
char c = 'A';
int i = 0;
boolean b = true;

System.out.println(b ? c : i);
System.out.println(b ? c : (char)i);

System.out.println(b ? c : 0);
System.out.println(b ? c : (char)0);
}
}

输出:

65
A
A
A

从我站的地方看确实很奇怪。我原以为只有 A 可以打印出来。而且:当我将 0 替换为 i 时,为什么输出会发生变化? i 的所有值的输出似乎都相同,而不仅仅是 0

最佳答案

当你想选择苹果和橙子时,你必须推广其中之一(较小的那个):

public class Test {
public static void main(String[] args) {
char c = 'A';
int i = 0;
boolean b = true;

System.out.println(b ? c : i); // Promoted to int ---> 65
System.out.println(b ? c : (char)i); // Not promoted ------> A (char vs char)

System.out.println(b ? c : 0); // Not promoted vs null/0
System.out.println(b ? c : (char)0); // Not promoted vs char
}
}

如果有变量类型,例如 nibble,那么您在选择时不会得到不同的输出。

System.out.println(b ? c : (nibble)i); // I know there is no nibble. :)
// nibble promotes to char.
// I know... there is no nibble.
//so, output is A

关于java - Java如何决定三元条件运算符表达式的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12332574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com