如图所示
false int x和char i进行三母运算 ,得到的结果是121 ,其实这个121 是 奥克斯码表里的值
为什么会转换值呢,因为当和变量比较的时候才会X的ASCII是88.
System.out.print和System.out.println区别是前面的不换行,后面的最后会换行。
条件表达式的返回类型看冒号两边的类型:
(1)如果冒号两边,是同一种类型,那么就返回这个类型。
(2)如果其中一边的类型是byte、short或者char(暂且统称为X类型),而且另外一边是int常量(注意是常量),而且这个常量可以用X类型表示(也就是不溢出),那么,结果就是X类型。
System.out.print(true ? x : 0);中0是int常量,并且可以用x的类型char类型表示,所以条件表达式返回的是char类型,输出X。
又如:
System.out.println( true ? 98 : ‘a’);
输出: b
(3)如果不符合上述情况的,则自动隐式转换,即小范围的转换成大范围的,低精度的转换成高精度的类型,最后的结果就是转换后的类型。
System.out.println(false ? i : x);中i和x的类型不一样,返回int类型,88,输出的时候转化为字符串。
又如
System.out.println( false ? 1.0 : ‘a’);输出: 97.0