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/