我知道字符串文字是对象。 根据
https://en.wikibooks.org/wiki/Java_Programming/Classes,_Objects_and_Types
创建对象时,也会创建对该对象的引用。 仅通过此对象引用不能直接在Java中访问该对象。此对象引用具有分配给它的类型。将对象引用作为参数传递给方法时,我们需要这种类型。
但是当我们有文字访问String方法时,我们是否违反了此规定?
例如:
System.out.println("Literal".toUpperCase());
这不是直接访问对象吗?而不是通过引用访问对象。
例如:
String x = "Literal";
System.out.println(x.toUpperCase());
答案 0 :(得分:20)
这不是直接访问对象吗?而不是通过引用访问对象。
否,您仍在使用参考。作为字符串文字的表达式的值是字符串引用。它仍然不是您直接访问的对象。
在您的示例中,x
的值仍然是参考,并且您的两个代码段是相同的,除了存在变量x
之外。