我们能否访问没有任何引用的字符串池中的对象。这是代码:
String str ="abc";
str.toUpperCase();
System.out.println(str); // System.out.println(str.toUpperCase());
Output : abc
在这里,我正在toUpperCase()
对str
. 在字符串池中,将为此创建一个对象str.toUpperCase();
。我们可以访问这个对象吗?如果是的话怎么办?
这是使用 java 文档的地方......请参阅http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#toUpperCase()
str.toUpperCase() 返回一个转换为大写的字符串,您必须将其分配给另一个字符串变量或进行自赋值,以便稍后访问它。
String str ="abc"; // 1
str.toUpperCase(); // 2
System.out.println(str); // 3
在上面的代码中
第一行将创建String
值为“abc”的新对象并将其分配给引用变量str
。
第二行将创建新的对象,String
因为String
类是不可变的,所以原始对象str
不会改变。但是在这里我们没有分配在第 2 行创建的新对象,因此它将在堆区域的某个地方丢失。
这就是为什么在第 3 行打印值为“abc”的原因。
如果要使用创建的新对象,str.toUpperCase()
则必须在新的引用变量中分配它。或替代选项是像这样更新原始String
对象
str = str.toUpperCase();
但是在上面的操作中,包含值“abc”的原始对象str
会在堆区丢失!!!!!!
您可以在此处找到有关使用String
示例的详细信息。