A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 猎鹰tianya 中级黑马   /  2014-1-4 20:49  /  1591 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 猎鹰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呢,不解!!!







评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
明明写的是9,怎么输出后就变成9.0了呢?
回复 使用道具 举报
与前面的99.9有关,三目运算符也懂自动提升数据类型?不太清楚了。
总之
  1. System.out.println("value is "+ ((x>4) ? 99 :9));
复制代码
这样结果就是9

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
FFF + 1 很给力!
猎鹰tianya + 2 好吧,继续疑惑中。。。。。。。.

查看全部评分

回复 使用道具 举报
这是数据类型转换的问题。只要有double类型的数据参与运算(三目运算符也是运算符),所有参与运算的数据都自动提升为double型,99.9默认是double类型,所以后面的9会从int型自动提升为double型,就变成9.0了;希望你能明白!

评分

参与人数 1黑马币 +2 收起 理由
猎鹰tianya + 2 赞一个!

查看全部评分

回复 使用道具 举报
  1. "value is "+ ((x>4) ? 99.9 :9)//99.9是double类型,9是int类型,返回结果默认以范围大的为准,自动提升数据类型。
复制代码

评分

参与人数 1黑马币 +2 收起 理由
猎鹰tianya + 2 赞一个!

查看全部评分

回复 使用道具 举报

回帖奖励 +1

因为三元运算符所有数据都会参与运算,类型会提升为double类型,所以是9.0.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马