在Java中,为什么我们可以像使用原语一样使用String类?

2022-09-01 17:21:00

在Java中,我们通常这样做:

Class myObject = new Class();

因为关键字返回地址。new

但是我们为什么要这样做呢?

String myString = "Hello";

仿佛是原始的?String

我问我的老师这个问题,他回答说,这是因为引号中的内容等同于地址,但他不确定。你能确认吗?

“Hello”是否存储在类 String 的实例变量中?


答案 1

...仿佛是原始的?String

正如Jon在评论中指出的那样,“具有文字形式”!=“是一种原始类型。字符串在 Java 中具有文本形式,因为规范为它们定义了一个文本形式。 仍然是对象类型。String

有些语言还有其他对象类型也具有文字形式(例如,JavaScript具有正则表达式,数组和非数组对象的文字形式[其字符串的文字形式实际上定义了它所谓的字符串基元而不是字符串对象 - JavaScript具有字符串的基元和对象版本])。我认为字符串是Java中唯一的字符串(除了,这是“no object”的文字),尽管当然有数组初始值设定项,它们与文字相似但不完全相同。null


答案 2

您可以使用文字表达式这一事实并不意味着该表达式会产生基元类型!这只是你的一个误解

你看:

 Integer[] numbers = { 1, 2, 3 };

也是一个文字(好吧,“几乎”;因为你只能用它来做这种数组初始化语句);但它不是原始类型!

并问你问题中的原因部分:机会是 - 只是为了方便。当Java被创建时,它意味着比当时的C和C++“更好”。你猜怎么着:在这些语言中处理字符串非常烦人且容易出错。

从这个意义上说:引入字符串文字可以被视为独特的卖点,以区别于Java与竞争对手!