原始类和原始数据类型之间有什么区别?

时间:2017-08-02 15:30:47

标签: java class primitive-types

我正在读一本关于Java的书,他们似乎使用了两个术语"原始类"和"原始数据类型"互换。

两者之间的区别是什么?我知道Integer是一个包装类,人们将int引用为原始数据类型。它也是一个原始类吗?

2 个答案:

答案 0 :(得分:4)

他们在这里混淆了他们的白话。

基元是对象的数据类型。 intfloatdoublelongshortbooleanchar是原始数据类型的示例。你不能在这些数据类型上调用方法,并且它们没有很高的内存占用,这是它们与类的明显区别。

其他所有内容是一个类(在接口和枚举的情况下类似于类)。几乎所有以大写字母开头的内容,例如StringInteger都是类。数组也可以归类为非原语,即使它们可以保留它们。 int[]不是原始类型,但它包含原语。

唯一可以实际来到 close 的是包装类as explained by the JLS,但即使这样,它们仍然是仍然是类,而不是原语

答案 1 :(得分:4)

原始类在反射API的上下文中具有特殊含义:当您需要检索采用基本类型参​​数的方法时,您需要一个与该基本类型对应的基本类对象。

如果必须区分采用原语的重载和采用包装器的重载,这一点很重要:

void someMethod(int n);
void someMethod(Integer n);

获取此类对象有两种方法:

  • 使用类文字,例如int.class
  • 使用相应包装类的TYPE成员,例如Integer.TYPE

这与表示原始包装器的类不是同一个类。换句话说,

int.class != Integer.class