【问题标题】:Primitive types as "normal" variables? [duplicate]原始类型作为“正常”变量? [复制]
【发布时间】:2026-01-15 01:30:01
【问题描述】:

此时,您可能想知道为什么不需要对原始数据类型使用 new 运算符。答案是 Java 的原始类型不是作为对象实现的。相反,它们被实现为“正常”变量。这样做是为了提高效率。对于原始数据类型的对象版本,请参阅 Wrapper Classes。

“正常”变量是什么意思?以及为什么 Java 将原始类型视为“正常”变量?

【问题讨论】:

  • 我从未见过这样使用的术语——请参考
  • 我认为这只是解释 Java 的对象变量是引用,而原语是“正常的”,因为它们的行为类似于其他语言中的变量(按值传递)。据我所知,Java 世界并不重视确切的术语“正常变量”,尽管我可能是错的。
  • 但仅供参考,“正常”不是 Java 原语的标准术语

标签: java


【解决方案1】:

我们确实使用 new 来使用构造函数来实例化引用类型。而且我们不会将 new 用于原始类型。我认为,这就是参考文本试图传达的内容。

但是:你不用 new 声明整数和浮点数之类的东西,不是因为它们没有实现为对象,而是因为该语言提供了一种文字语法供你使用。

在创建字符串时不要使用 new(除非你故意做一些奇怪的事情),因为该语言接受一种特殊的语法来描述字符串文字。但是字符串绝对是引用类型。

与 java 不同,有些语言中的一切都是对象。它们有一些看起来类似于 java 原始类型的东西,但它们是对象,你不需要 new 来实例化它们。

很高兴知道引用类型和原始值之间存在区别。有人尝试用自动装箱来掩盖它,但它仍然会导致问题,例如在使用流时,某些操作元素的方法可能会更好,因为它们不会对每个值强制装箱和拆箱。

【讨论】:

    最近更新 更多