0

我们能否访问没有任何引用的字符串池中的对象。这是代码:

String str ="abc";
str.toUpperCase();
System.out.println(str); // System.out.println(str.toUpperCase());

Output : abc

在这里,我正在toUpperCase()str. 在字符串池中,将为此创建一个对象str.toUpperCase();。我们可以访问这个对象吗?如果是的话怎么办?

4

2 回答 2

2

这是使用 java 文档的地方......请参阅http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#toUpperCase()

str.toUpperCase() 返回一个转换为大写的字符串,您必须将其分配给另一个字符串变量或进行自赋值,以便稍后访问它。

于 2013-10-24T14:44:58.687 回答
2
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示例的详细信息。

于 2013-10-24T19:04:26.647 回答