字符串文字的调用方法(Java)

csg*_*guy 13 java string object

我知道字符串文字是对象。根据

https://zh.wikibooks.org/wiki/Java_Programming/Classes_Objects_and_Types

创建对象时,也会创建对该对象的引用。只能通过此对象引用才能在Java中直接访问该对象。该对象引用具有分配给它的类型。当将对象引用作为参数传递给方法时,我们需要这种类型。

但是,当我们有文字访问String方法时,是否违反了这一规定?

例如:

System.out.println("Literal".toUpperCase());
Run Code Online (Sandbox Code Playgroud)

这不是直接访问对象吗?与通过引用访问对象相反。

例如:

String x = "Literal"; 
System.out.println(x.toUpperCase());
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 20

这不是直接访问对象吗?与通过引用访问对象相反。

不,您仍在使用参考。作为字符串文字的表达式的值是字符串引用。它仍然不是您直接访问的对象。

在您的示例中,的值x仍然是引用,并且您的两个代码段是相同的,除了存在变量x

  • 没那么特别。也有类文字,而空文字也是计算对象引用的文字。 (4认同)
  • @omaewa:好吧,我想说“它拥有与字符串文字中相同的字符序列”。好像并没有涉及额外的间接级别,它只是对内容正确的字符串的引用。 (3认同)