一:
三目运算符即 条件 ? 返回值1 : 返回值2;
在使用三目运算符时,尽量保证两个返回值的类型一致,不然会触发类型转换
1 int a = 1, b = 2; 2 System.out.println(a == b ? 9.9 : 9); 3 System.out.println(a == b ? 'a' : 98); 4 System.out.println(a == b ? 'a' : Integer.MAX_VALUE); 5 System.out.println(a == b ? 'a' : b); 6 System.out.println(a != b ? 'a' : b);
答案:
如果返回值1和返回值2都是同种类型,那么三目最终的返回类型就是这种类型
如果返回值1和返回值2不是同种类型,那么三目最终的返回类型是这两种类型的相同最小父类(最接近的父类,如果没有则返回Object,例如Integer和String最终返回的将是Object)。
对于基本数据类型,有点特殊。如果一个返回值类型为T(T为byte,char或short),另一个为int的常数,那么如果这个常数值在T的取值范围内,则三目最终的返回类型为T,如果常数值不在T的取值范围内,则返回发生自动类型转换。