【问题标题】:In JAVA, a primitive data type like "int" a CLASS or an OBJECT?在 JAVA 中,像“int”这样的原始数据类型是 CLASS 还是 OBJECT?
【发布时间】:2018-09-23 20:28:09
【问题描述】:

我读到了原始 Java 类型(booleanbytecharshortintlongfloatdouble)并且关键字void 也表示为类Class 对象。那么这意味着int 是类Class 的对象那么为什么下面的语句不会抛出错误,因为.class 只与类名一起使用?

Class c = int.class

【问题讨论】:

  • "[...] int is an object of class CLASS [...]" - 否。Class 返回的实例int.classClass 的一个实例,代表int 的类型。基元不是对象,它们不是引用类型。
  • 好吧,如果它既不是CLASS也不是OBJECT,那么“int”是什么?
  • 阅读§4 of the JLS。所有类型都在那里定义。基元(booleanbytecharshortintlongfloatdouble)是基元。
  • 链接(JLS 的§4)说 int 是我知道的原始数据,所以我应该假设原始数据类型 .class 持有异常,因为它只能与类名和int 不是类名而是原始数据类型?
  • 请看@Andrew 's answer。他引用了定义 Class 文字的相应 JLS 部分。

标签: java class object types int


【解决方案1】:

这是因为Class 所有原语都有这个。就像文件中所说的那样。

基本的 Java 类型(boolean、byte、char、short、int、long、 float 和 double),关键字 void 也表示为 Class 对象。

这对反射很有用。这就是您可以使用 int.class 和所有原语类型的原因。所以所有原语都有一个类......即使它们是原语。有点令人困惑,但对于了解它是否是 int.class or a Integer.class

【讨论】:

    【解决方案2】:
    • int 是数字类型。
    • int.class 是一个类文字。

    类字面量是由类、接口、数组或原始类型或伪类型void的名称组成的表达式,后跟.和标记类。

    ClassLiteral:

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

    JLS 10 - 15.8.2. Class Literals

    此外,

    Class<Integer> intClass = int.class;
    

    根据

    p.class的类型,其中p是原始类型的名称(§4.2),是Class&lt;B&gt;,其中Bp类型的表达式在装箱转换后的类型(@ 987654323@)。

    JLS 10 - 15.8.2. Class Literals

    【讨论】:

      【解决方案3】:

      Java 是一种强类型语言,这就是为什么必须使用变量

      在以后在程序中使用之前定义。

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

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

      Java 中有两种可用的数据类型:-

      1) 原始数据类型 2) 引用/对象数据类型

      Java 中有八个原语:

      字节(数字,1字节) 短(数字,2 个字节) int(数字,4 个字节) 长(数字,8 字节) float(浮点数,4 字节) double(浮点数,8 字节) char(一个字符,2个字节) boolean (true or false, 1 byte)

      Checkout the Video Tutorial for Primitive data types in java

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-21
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2013-04-29
        • 2011-12-02
        相关资源
        最近更新 更多