黑马程序员技术交流社区

标题: 三元运算符问题 [打印本页]

作者: 猎鹰tianya    时间: 2014-1-4 20:49
标题: 三元运算符问题
本帖最后由 猎鹰tianya 于 2014-1-12 12:04 编辑
  1. class Test
  2. {
  3.         public static void main(String args[]){
  4.                 int x=4;
  5.                 System.out.println("value is "+ ((x>4) ? 99.9 :9));
  6.         }

  7. }
复制代码
为什么结果是9.0呢,不解!!!








作者: 猎鹰tianya    时间: 2014-1-4 20:51
明明写的是9,怎么输出后就变成9.0了呢?
作者: 浮出一个美    时间: 2014-1-4 21:41
与前面的99.9有关,三目运算符也懂自动提升数据类型?不太清楚了。
总之
  1. System.out.println("value is "+ ((x>4) ? 99 :9));
复制代码
这样结果就是9
作者: XiaoS    时间: 2014-1-4 22:24
这是数据类型转换的问题。只要有double类型的数据参与运算(三目运算符也是运算符),所有参与运算的数据都自动提升为double型,99.9默认是double类型,所以后面的9会从int型自动提升为double型,就变成9.0了;希望你能明白!
作者: yaohsieh    时间: 2014-1-4 22:27
  1. "value is "+ ((x>4) ? 99.9 :9)//99.9是double类型,9是int类型,返回结果默认以范围大的为准,自动提升数据类型。
复制代码

作者: haozi050    时间: 2014-1-12 12:01
因为三元运算符所有数据都会参与运算,类型会提升为double类型,所以是9.0.




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