JVM 是否在 java 中在运行时创建基本类型的对象?
Does JVM create Objects of primitive types at runtime in java?
这可能是一个愚蠢的问题,但因为我要创建一个算术异常情况,即 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 中的最终静态字段 class。那么这是否意味着每个原语都在运行时自动装箱到包装器 class 对象?如果不是,那它是怎么返回无穷大的?
Float.POSITIVE_INFINITY
是Float
class上的静态字段,没错。但它是 float
类型(不是 Float
),所以它本身就是一个原始类型。这里没有拳击比赛。
事实上,作为 IEEE 754 single-precision floating point number 的 float
不能只包含一系列常规浮点数,还可以包含一些特殊值,如 ±∞ 和南。由于 Java 没有特殊语法来写入这些值,因此它们在 Float
class 上作为静态字段提供。
这可能是一个愚蠢的问题,但因为我要创建一个算术异常情况,即 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 中的最终静态字段 class。那么这是否意味着每个原语都在运行时自动装箱到包装器 class 对象?如果不是,那它是怎么返回无穷大的?
Float.POSITIVE_INFINITY
是Float
class上的静态字段,没错。但它是 float
类型(不是 Float
),所以它本身就是一个原始类型。这里没有拳击比赛。
事实上,作为 IEEE 754 single-precision floating point number 的 float
不能只包含一系列常规浮点数,还可以包含一些特殊值,如 ±∞ 和南。由于 Java 没有特殊语法来写入这些值,因此它们在 Float
class 上作为静态字段提供。