您的位置:首页 > 编程语言 > Java开发

java--三目运算符 类型自动提升

2015-11-13 11:54 309 查看
public static void main(String[] args) {
int i=99;
System.out.println("99999判断结果:"+(true?'a':99999));
System.out.println("-1判断结果   :"+(true?'a':-1));
System.out.println("0判断结果    :"+(true?'a':0));
System.out.println("65535判断结果:"+(true?'a':65535));
System.out.println("65536判断结果:"+(true?'a':65536));
System.out.println("i判断结果    :"+(true?'a':i));
}


99999判断结果:97
-1判断结果   :97
0判断结果    :a
65535判断结果:a
65536判断结果:97
i判断结果    :97


总结出了以下的结论:

(1)假如表达式1和表达式2具有相同的类型,那么整个条件运算符结果的类型就是这个类型。

(2)假如一个表达式的类型是T,T是byte或short或char,另一个表达式的类型是int类型的常量表达式,而且这个常量表达式的值是可以用类型T表示的(也就是说,常量表达式的值是在类型T的取值范围之内),那么整个条件运算符结果的类型就是T。

(3)除以上情况外,假如表达式1和表达式2的类型不同,那么将进行类型提升,整个条件运算符结果的类型就是提升后的类型

根据上述结论可以看出,参考结论(2)char类型的取值范围为0-65535,在char取值范围中均会返回char类型的值,所以输出a。-1和65536超出了char的取值范围,所以类型提升为int型,输出a对应的ascii码。最后一条判断,已经明确了i为int类型,所以根据结论三,类型提升,输出结果97。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: