原始 class 和原始数据类型有什么区别?
What is the difference between a primitive class and primitive data type?
我正在读一本关于 Java 的书,他们似乎可以互换使用 "primitive class" 和 "primitive data type" 这两个术语。
两者有什么区别?我知道 Integer 是一个包装器 class,人们将 int 称为原始数据类型。那么它也是原始的吗class?
他们在这里混淆了他们的白话。
原语是一种数据类型,它不是对象。 int
、float
、double
、long
、short
、boolean
和 char
是基本数据类型的示例。您不能对这些数据类型调用方法,并且它们不会占用大量内存,这是它们与 classes.
的显着区别
其他所有东西 都是class(或者在接口和枚举的情况下类似于class)。几乎所有以大写字母开头的东西,比如 String
、Integer
都是 class。数组也 class 化为非基元,即使它们可能包含它们。 int[]
不是原始类型,但它包含原始类型。
唯一可能 close 的是包装器 classes,as explained by the JLS,但即使那样,它们也是 仍然 classes,而不是原语。
Primitive class 在反射 API 的上下文中有一个特殊的含义:当你需要检索一个带有原始类型参数的方法时,你需要一个原始 class 对象对应于那种原始类型。
如果您必须区分采用原语的重载和采用包装器的重载,这一点很重要:
void someMethod(int n);
void someMethod(Integer n);
有两种方法可以获得这个class对象:
- 使用 class 文字,例如
int.class
,或
- 使用对应的 wrapper class 的
TYPE
成员,例如Integer.TYPE
.
这与表示原始包装器的 class 不同 class。也就是说,
int.class != Integer.class
我正在读一本关于 Java 的书,他们似乎可以互换使用 "primitive class" 和 "primitive data type" 这两个术语。
两者有什么区别?我知道 Integer 是一个包装器 class,人们将 int 称为原始数据类型。那么它也是原始的吗class?
他们在这里混淆了他们的白话。
原语是一种数据类型,它不是对象。 int
、float
、double
、long
、short
、boolean
和 char
是基本数据类型的示例。您不能对这些数据类型调用方法,并且它们不会占用大量内存,这是它们与 classes.
其他所有东西 都是class(或者在接口和枚举的情况下类似于class)。几乎所有以大写字母开头的东西,比如 String
、Integer
都是 class。数组也 class 化为非基元,即使它们可能包含它们。 int[]
不是原始类型,但它包含原始类型。
唯一可能 close 的是包装器 classes,as explained by the JLS,但即使那样,它们也是 仍然 classes,而不是原语。
Primitive class 在反射 API 的上下文中有一个特殊的含义:当你需要检索一个带有原始类型参数的方法时,你需要一个原始 class 对象对应于那种原始类型。
如果您必须区分采用原语的重载和采用包装器的重载,这一点很重要:
void someMethod(int n);
void someMethod(Integer n);
有两种方法可以获得这个class对象:
- 使用 class 文字,例如
int.class
,或 - 使用对应的 wrapper class 的
TYPE
成员,例如Integer.TYPE
.
这与表示原始包装器的 class 不同 class。也就是说,
int.class != Integer.class