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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 759345779 中级黑马   /  2014-4-3 11:26  /  1001 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 759345779 于 2014-4-4 11:47 编辑

public class Demo {
        public static void main(String args[]) {
                int x = 4;
                System.out.println("value  is  " + ((x > 4) ? 99.9 : 9));
        }
}
以上代码执行结果为什么是9.0,不是直接x>4为假直接为9吗,怎么为9.0,他的基本原理到底是怎么样的?

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

6 个回复

倒序浏览
  System.out.println("value  is  " + ((x > 4) ? 99.9 : 9));   语句中,已经把9提升成浮点型数据。。。所以打印9
如果:

  1. public class Demo {
  2.         public static void main(String args[]) {
  3.                 int x = 4;
  4.                 System.out.println("value  is  " + ((x > 4) ? 10 : 9));
  5.         }
  6.                 }
复制代码

这样就打印整数9.。
回复 使用道具 举报 1 0
Up↑Lee↗ 发表于 2014-4-3 11:36
System.out.println("value  is  " + ((x > 4) ? 99.9 : 9));   语句中,已经把9提升成浮点型数据。。。 ...

那就是说其内部规定按照其中等级高的类型提升后再执行?
回复 使用道具 举报
运算过程中都是把低等级的提升为高等级在进行运算的
回复 使用道具 举报
759345779 发表于 2014-4-3 12:05
那就是说其内部规定按照其中等级高的类型提升后再执行?

对啊  就是这样
回复 使用道具 举报

谢谢你了
回复 使用道具 举报

  1. public class Demo {
  2.         public static void main(String args[]) {
  3.                 int x = 4;
  4.                 System.out.println("value  is  " + ((x > 4) ? 99.9 : 9));//在运算时,虽然只是打印结果,但是9和9.99同时出现了,系统就会将int类型的9自动转换为float类型的9.0
  5.         }
  6. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马