当前位置: 首页 > 知识库问答 >
问题:

为什么原始数据类型在Java中不能为“null”?

谷梁楚青
2023-03-14

当声明任何基本类型数据(如< code>int或< code>double)时,它们被初始化为< code>0或< code>0.0。为什么我们不能将它们设置为< code>null?

共有3个答案

邹书
2023-03-14

因为 Java 中的原始数据类型不是对象。您始终可以使用其中一个包装类来拥有对象。八种基元数据类型中的每一种都有其相应的包装器:

  • 字节:java.lang.byte
  • 简短:java.lang.short
  • int:java.lang.Integer
  • long:java.lang.long
  • float:java.lang.float
  • double:java.lang.double
  • 布尔值:java.lang.boolean
  • char<code>java.lang.Character</code>

如果您对整个结构感兴趣,可以从这里开始(原始数据类型)。

巫研
2023-03-14

因为null是一个引用。基元类型不是引用类型。只有对象是引用类型。

曾永新
2023-03-14

基元类型只是数据。另一方面,我们所说的对象只是指向数据存储位置的指针。例如:

Integer object = new Integer(3);
int number = 3;

在这种情况下,object 只是指向值恰好为 3 的 Integer 对象的指针。也就是说,在存储变量对象的内存位置,您所拥有的只是对数据实际位置的引用。另一方面,存储数字的内存位置直接包含值 3。

因此,您可以将< code>object设置为null,但这仅仅意味着该对象的数据为null(即未赋值)。您不能将int设置为null,因为该语言会将其解释为值0。

希望有帮助!

 类似资料:
  • 问题内容: 声明任何原始类型的数据(例如int或)时,它们会初始化为或。为什么我们不能将它们设置为? 问题答案: 基本类型就是数据。另一方面,我们称为对象的对象只是指向数据存储位置的指针。例如: 在这种情况下,它只是指向一个整数对象的指针,该对象的值恰好是3。也就是说,在存储变量对象的内存位置,你所拥有的只是对数据实际位置的引用。number另一方面,存储的存储位置直接包含值3。 因此,你可以将设

  • 问题内容: 如果有Wrapper类使Java成为纯面向对象的语言,那么为什么会有可在Java中使用的Primitive数据类型呢? 问题答案: 为了效率。基本类型的变量直接包含值。非基本类型的变量是引用,引用存储在内存中其他位置的对象。 每次您需要使用包装器类型的值时,JVM都需要在内存中查找对象以获取该值。对于原始类型,这不是必需的,因为变量本身包含值,而不是对包含该值的对象的引用。 但是,这不

  • 问题内容: 在Java中,我们可以直接用于声明字符串变量名称并指定其值。即使String是非原始数据类型,也不必通过使用new关键字将字符串定义为数组。 有人可以解释为什么String是非原始数据类型吗? 问题答案: 这是字符串文字。像这样声明字符串时,实际上是在String上调用intern()方法。此方法引用内部字符串对象池。如果已经存在一个字符串值“ This is stringlitera

  • 问题内容: ArrayList仅接受引用类型作为其元素,而不接受原始数据类型。尝试这样做时会产生编译时错误。 这背后的概念是什么?似乎是一个限制,不是吗? 问题答案: Java的所有收集类都存储它们收集的对象的内存位置。基本值不 适合 同一定义。 为避免此问题,JDK5及更高版本具有 自动装箱功能 -其中,将原语转换为适当的对象,然后在添加或从集合中读取原语时将其转换回原样。请参阅有关此主题的官方

  • 这是对我上一个问题的延续,并同意这个问题的答案 包装类声明 Java将原始数据类型包装到包装类中,那是为什么呢 不允许,但 是允许的。

  • 问题内容: Java将原始数据类型包装到包装器类,然后为什么 不允许,但 被允许。 问题答案: 因为原语表示 值, 而对象变量表示对复杂数据对象的 引用 (类似于指针)。 没有通用的null值,它是一个特殊的关键字,它“不引用任何内容”或为空引用 -这是非常不专业的答案,但我想它会是最合适的。 此外,您认为null的数值是多少?0?-1?但是,这些是有效的整数,那又是什么? 我强烈建议您开始熟悉以