Java中,像"int"这样的原始数据类型是一个类还是一个对象?

3
我读到原始的Java类型(booleanbytecharshortintlongfloatdouble)和关键字void也被表示为Class对象。那么这意味着intClass对象的一个实例,那么为什么以下语句不会出错,因为.class只能与类名一起使用?
Class c = int.class

2
不是的,int.class 返回的 Class 实例是一个表示 int 类型的 Class 实例。原始类型不是对象,它们不是引用类型。 - Turing85
好的,那么如果int既不是类也不是对象,它是什么? - user2044296
请阅读JLS的§4。所有类型在那里被定义。原始类型(booleanbytecharshortintlongfloatdouble)都是原始类型。 - Turing85
链接(JLS第4节)说int是原始类型,这个我知道,那么我应该假设原始数据类型.class会抛出异常,因为它只能与类名一起使用,而int不是类名而是原始数据类型? - user2044296
由于您在评论中询问了什么是“int”,而在问题中询问了什么是“int.class”,因此不清楚您的意思。请做出您的选择。 - AxelH
1
请查看@Andrew的答案。他在那里引用了相应的JLS章节,定义了“Class”字面量。 - Turing85
3个回答

8
  • int是一种数值类型。
  • int.class是一个类字面量。

类字面量是由类、接口、数组或原始类型的名称或伪类型 void 组成的表达式,后跟一个点号和关键字 class

ClassLiteral

  • TypeName {[ ]} . class
  • NumericType {[ ]} . class
  • boolean {[ ]} . class
  • void . class

JLS 10 - 15.8.2. 类字面量

此外,

Class<Integer> intClass = int.class;

根据

对于原始类型(§4.2)的名称为 p 的类,其类型是 Class<B>,其中 B 是经过装箱转换(§5.1.7)后类型为 p 的表达式的类型。

JLS 10 - 15.8.2. 类字面量


0

这是因为的原因,所有基本类型都有这个。就像文档中所说。

原始的Java类型(布尔型、字节型、字符型、短整型、整型、长整型、浮点型和双精度型),以及关键字void也被表示为Class对象。

这对于反射非常有用。这就是为什么你可以使用int.class和所有基本类型。所以所有基本类型都有一个类...即使它们是基本类型。有点混乱但在反射中很有用,可以知道是int.class还是Integer.class


-2

Java是一种强类型语言,因此变量在程序中使用之前必须进行定义。

变量是计算机内存中保留值的桶或容器。创建变量时,您会在计算机内存中预留一些空间。

根据变量的数据类型,操作系统分配内存并将值存储在保留的内存中。

Java有两种数据类型:-

1)基本数据类型 2)引用/对象数据类型

Java有8个原始数据类型:

byte(数字,1字节) short(数字,2字节) int(数字,4字节) long(数字,8字节) float(浮点数,4字节) double(浮点数,8字节) char(字符,2字节) boolean(真或假,1字节)

查看Java原始数据类型的视频教程


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接