java - 如果你不引用它,Java 中的对象会发生什么,就像这里的 : myString. concat ("that")

标签 java string reference

String myString = "this";
//string is immutable

myString.concat(" that");
//a new object is created but not assigned to anything

System.out.println(myString); //prints out "this"

我更喜欢编译时错误 - 为什么不是这样?当在不提供返回类型的情况下调用时,同样的问题可以应用于任何具有返回类型的方法。

public myObject doStuff(...whatever){
 //define my method
 return anObject;
}

可以在不提供引用/变量来保存返回类型的情况下调用:

MyObject newObject = doStuff(); //works
doStuff(); //works too without assigning return object

最佳答案

该对象将被创建并立即符合垃圾回收条件(即它可能很快就会被垃圾回收)。

这不是编译时错误的原因是并非每个返回方法的方法都要求您使用该返回值。有些方法只是因为它们的副作用而被调用。

一个很好的例子是 Collection.add() : 它返回一个 boolean 对象,但通常情况下,调用代码对该结果不感兴趣并简单地忽略它。

同样StringBuilder.append()返回 StringBuilder 实例,以便您可以链接调用。但忽略该返回值并简单地使用 myStringBuilder.append("foo"); 也是完全有效的。

关于java - 如果你不引用它,Java 中的对象会发生什么,就像这里的 : myString. concat ("that"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7281160/

相关文章:

java - Google pay isReadyToPay 方法返回 false

java - 查询TableItem的数据对象(SWT)

python - 将空字典转换为空字符串

c++ - 向上转型指针引用

c# - 你能让一个元素和一个列表中的元素表现得像同一个对象吗?

java - Netbeans MVC Swing JTable ResultSet 数据插入

java - 在 Java 中保存程序设置的不同方法

c - 基数树实现中的无限循环问题

c - 如何修复从 C 中的函数传递指针的段错误?

C++对指针: inconsistent segfault的引用