JVM是否在Java运行时创建原始类型的对象?

时间:2018-07-20 18:45:41

标签: java wrapper primitive-types

这可能是一个愚蠢的问题,但是由于我要创建算术异常案例,例如44/0 ...我在下面的程序中创建了这个

public class Simple{
  public static void main(String args[]){
    float a = 78.0f;
    float b= 0.0f;
    float c= a/b;
    System.out.println(c);
  }
}

结果:

Infinity

但是正无穷大是Float Wrapper类中的最后一个静态字段。那么这是否意味着每个原语在运行时都会自动装箱到包装类对象?如果不是,那么它如何返回无穷大?

1 个答案:

答案 0 :(得分:2)

Float.POSITIVE_INFINITYFloat类上的静态字段,为true。但是它的类型为float(不是Float),因此它本身就是原始类型。这里没有拳击。

问题的事实是,floatIEEE 754 single-precision floating point number,不能仅容纳一定范围的常规浮点数,还可以容纳一些特殊值,例如±∞和NaN。而且由于Java没有编写这些值的特殊语法,因此它们在Float类中作为静态字段提供。