三元运算符返回值问题

在使用三元运算符的过程中遇到这样一个情况

	char x = 'x';
    int i = 10;
    //输出结果如注释所示
    System.out.println(true? x : i);// 120
    System.out.println(true? 'x' : 1111110);// 120
    System.out.println(true? 'x' : 111);// x 111小于char的容量 编译时默认111为char型数据
    System.out.println(false? 'x' : 111);// o
    System.out.println(false? 'x' : 111111);// 111111

三元操作符类型的转换规則:

  • 若两个操作数不可转换,则不做转换,返回值为Object类型
  • 若两个操作数是明确类型的表达式(比如变量),則按照正常的二进制数字来转换,int 类型转换为long类型,long类型转换为float类型等
  • 若两个操作数中有一个是数字S,另外一个是表达式,且其类型为T,那么,若数字S在T的范围内,則转换为T类型;若S超出了T类型的范围,则T转换为S类
  • 若两个操作数都是直接量数字(Literal) 则返回值类型为范围较大者。
发布了41 篇原创文章 · 获赞 1 · 访问量 933

猜你喜欢

转载自blog.csdn.net/DreamCloud714/article/details/102874768
今日推荐