前提知识:
https://blog.csdn.net/qq_32003379/article/details/87098038
范围小的类型向范围大的类型提升, byte 、short、char 运算时直接提升为 int
题目:
public static void main(String[] args){
char x='x';
int i=1;
System.out.print(true ? x:0);
System.out.print(false ? i:x);
}
输出的是: x120
在表达式规范[JLS 15.25]中有3点规则:
1.如果第二操作数和第三个操作数类型相同,那它就是条件表达式的类型,可以避免混合类型的计算带来的问题。
2.对于第二个操作数和第三个操作数,其中一个操作数的类型是byte、short或者char(用T表示),而另一个操作数为一个int类型的常量表达式,那么条件表达式的类型是T类型
3.不符合1和2的情况下,条件表达的类型是第二个操作数和第三个操作数中类型大的那个