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。
相关文章推荐
- java并发编程实战
- java 集合的多线程
- 防止表单重复提交 java
- java对ArrayList排序代码示例
- spring的Annotation动态代理报错$Proxy11 cannot be cast to com.spring.service.BServiceImpl解决方案
- weblogic 启动报错 java.lang.LinkageError: loader constraint violation in interface itable initialization
- 取消myeclipse自动进入workspace
- Java transient关键字的作用及使用方法
- 使用spring @Scheduled注解执行定时任务
- 从头认识java-8.9 嵌套类(使用static的内部类)
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)(转)
- JavaBean入门 - 概念和简单例子
- java arrayList遍历的四种方法及Java中ArrayList类的用法
- 设计模式中单件模式的学习记录-java
- java将汉字转化为拼音
- Java 对象和类
- java do...while与while
- java do..while与while
- Java 修饰符
- 解析Java中静态变量与实例变量的区别