黑马程序员技术交流社区

标题: 为什么4<3?99.0:9会输出9.0 [打印本页]

作者: -律-    时间: 2014-12-23 00:40
标题: 为什么4<3?99.0:9会输出9.0
如题所示

作者: 青衫禅客    时间: 2014-12-23 01:07
这个要看你完整代码了,也许是哪块有个类型提升
作者: -律-    时间: 2014-12-23 01:18
青衫禅客 发表于 2014-12-23 01:07
这个要看你完整代码了,也许是哪块有个类型提升

在main方法下

直接打印(4<3?99.0:9)
作者: abathe    时间: 2014-12-23 10:12
本帖最后由 abathe 于 2014-12-23 10:16 编辑
  1. class  Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(4<3?99:9);                //结果9
  6.                 System.out.println(2<3?99:9);                //结果99
  7.                 System.out.println(4<3?99.0:9);             //结果9.0
  8.                 System.out.println(2<3?99:9.0);            //结果99.0
  9.         }
  10. }
复制代码

测试了以上四种可能,无论判断的结果为ture还是false,结果都会被提升为两者中较高等级的数据类型,这个应该是二元运算内部自动提升的
作者: 青衫禅客    时间: 2014-12-24 13:32
-律- 发表于 2014-12-23 01:18
在main方法下

直接打印(4

系统会自动比较一下两个数类型,double比int的长度范围大,所以以double为主。还有一种情况是char类型和数值常量比较,当数值常量的大小在char类型的长度范围之内,就会自动转换为char类型的结果




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2