java - 谁能解释第一个输出?(java运算符)
问题描述
public static void main(String[] args) {
char alpha = 'A';
int foo = 65;
boolean trueExp = true;
System.out.println(trueExp ? alpha : 0);
System.out.println(trueExp ? alpha : foo);
}
run result:A
65
我不知道第一个输出是 A。谁能解释?谢谢你!
解决方案
如果其中一个操作数 [ 的条件 ? :operator] 的类型是
T
whereT
isbyte
,short
, orchar
,而另一个操作数是类型的常量表达式(第 15.29 节),int
其值可以用 type 表示T
,那么条件表达式的类型是T
。
System.out.println(trueExp ? alpha : 0);
alpha
is a char
, 0
is anint
带有一个可以由 表示的常量表达式char
,因此条件表达式的结果是 a char
。
System.out.println(trueExp ? alpha : foo);
这里,foo
不是一个常量表达式,所以操作数将经历二进制数字提升到int
,因此它打印(int) alpha
, 65
。
如果您要声明final int foo
,它将A
再次打印(Ideone 演示)。
推荐阅读
- maven - In a Maven plugin, how can I access files from a dependency?
- r - 如何使用 facet_wrap 拆分列并绘制图形?
- .net - 窗体设计窗口在 Visual Studio 的窗体应用程序中不可见
- mongodb - mongodb group one _id 不同键名/$dateToString 两个数据字段
- artifactory - 使用 API 的 JFrog 工件提要
- python - 具有非方形像素的图像旋转的宽度/高度缩放
- html - 如何在父元素上使用剪辑路径时使子菜单可见
- laravel - Laravel 数据返回包装在一个数组中
- angularjs - 通过 AngularJS 访问时 principal.getName() 返回 null
- python - 试图在 python 中使用 selenium 找到元素的位置