char x='X';
int i=0;
System.out.println(true?x:i);
为什么输出的不是‘X’ 而是88?
int i=0;
System.out.println(true?x:i);
为什么输出的不是‘X’ 而是88?
望解答!
如上图,为java中自动类型转换顺序
1)精度小的向精度大的转换
2)字节短的向字节长的转换
3)char和int可以互换,char是用ASCII码表示
所以这个顺序为:
byte->(int=char)->long->float->double
三目运算符是一个运算符,
你将true?x:i放到了一起,它就会自动将x(char)转换为int
而char转换为int之后输出的是X对应的ASCII码88。
如果你将这个三目写成
if(true){
System.out.println(x);
}else{
System.out.println(i):
}
输出的必然是大写的X!