关于三元运算符中的类型提升

本文通过几个示例探讨了Java中三元运算符的类型提升规则,包括相同类型的操作数、特定数值范围内的操作数以及不同类型操作数的情况。

看了一篇好的关于三元运算符的讲解,就拿过来了,是关于三元运算符中的类型提升

[html]  view plain copy
  1. public static void main(String[] args) {  
  2.         int i=99;  
  3.         System.out.println("99999判断结果:"+(true?'a':99999));  
  4.         System.out.println("-1判断结果   :"+(true?'a':-1));  
  5.         System.out.println("0判断结果    :"+(true?'a':0));  
  6.         System.out.println("65535判断结果:"+(true?'a':65535));  
  7.         System.out.println("65536判断结果:"+(true?'a':65536));  
  8.         System.out.println("i判断结果    :"+(true?'a':i));  
  9.     }  
[html]  view plain copy
  1. public static void main(String[] args) {  
  2.         int i=99;  
  3.         System.out.println("99999判断结果:"+(true?'a':99999));  
  4.         System.out.println("-1判断结果   :"+(true?'a':-1));  
  5.         System.out.println("0判断结果    :"+(true?'a':0));  
  6.         System.out.println("65535判断结果:"+(true?'a':65535));  
  7.         System.out.println("65536判断结果:"+(true?'a':65536));  
  8.         System.out.println("i判断结果    :"+(true?'a':i));  
  9.     }  

涉及到了三目运算中类型自动提升的一些问题,运算结果如下:

[html]  view plain copy
  1. 99999判断结果:97  
  2. -1判断结果   :97  
  3. 0判断结果    :a  
  4. 65535判断结果:a  
  5. 65536判断结果:97  
  6. i判断结果    :97  
[html]  view plain copy
  1. 99999判断结果:97  
  2. -1判断结果   :97  
  3. 0判断结果    :a  
  4. 65535判断结果:a  
  5. 65536判断结果:97  
  6. 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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值