黑马程序员技术交流社区

标题: 类型提升问题 [打印本页]

作者: 759345779    时间: 2014-4-3 11:26
标题: 类型提升问题
本帖最后由 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,他的基本原理到底是怎么样的?
作者: Up↑Lee↗    时间: 2014-4-3 11:36
  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.。
作者: 759345779    时间: 2014-4-3 12:05
Up↑Lee↗ 发表于 2014-4-3 11:36
System.out.println("value  is  " + ((x > 4) ? 99.9 : 9));   语句中,已经把9提升成浮点型数据。。。 ...

那就是说其内部规定按照其中等级高的类型提升后再执行?
作者: 请备注    时间: 2014-4-3 12:10
运算过程中都是把低等级的提升为高等级在进行运算的
作者: Up↑Lee↗    时间: 2014-4-3 12:22
759345779 发表于 2014-4-3 12:05
那就是说其内部规定按照其中等级高的类型提升后再执行?

对啊  就是这样

作者: 759345779    时间: 2014-4-3 12:25
Up↑Lee↗ 发表于 2014-4-3 12:22
对啊  就是这样

谢谢你了
作者: 小班。    时间: 2014-4-3 13:48

  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. }
复制代码





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