5 回答
TA贡献1793条经验 获得超6个赞
在第一个示例中,您无法访问方法调用之后的实例,而在示例 2 中,由于将实例分配给变量,因此您仍然可以访问它。MyObject
因此,如果您需要/想要重用该实例,请以示例 2 为例。如果您只需要方法中的一个实例,则可以使用示例 1(尽管您也可以在 mthod ->根本没有参数)中将其固定)
第二个示例还为您提供了为对象提供有意义的标识符的机会。有时,这对可读性很有用。
关于第二个示例的另一件事:如果您对传递给该方法的实例执行更改,则这些更改将保留在您的methodOne
TA贡献1862条经验 获得超6个赞
取决于变量范围。
方法/函数的每个输入参数都作为值发送。但是,如果您将对象作为参数发送,则将其引用作为值发送。
public static void methodOne(){
MyObject objRef = new MyObject();
myMethod(objRef);
}
作为您的第二个代码示例,objRef 可以在整个 上使用。但是,在具有 void 返回的函数上进行修改是一个坏主意。methodOne()objRef
在第一个示例中,您发送了一个新对象(它使用其空的 param 构造函数启动),但您不能重用它。
TA贡献1875条经验 获得超5个赞
如果你需要对对象有一个引用,你应该使用第二个选项,否则第一个选项会更好,因为你要创建一个传递给函数的“临时”变量,JVM可以在内存中做一些小的优化,因为你不保留对该变量的引用。另外,如果你不需要参考,我认为第二个选项提供了更具可读性的代码。
TA贡献1856条经验 获得超11个赞
这取决于您要对该对象执行的操作。如果要在执行该方法后使用它,则需要将其分配为对象。
其他事项,您需要:
public static void methodOne(){
myMethod(new MyObject());
}
否则,它将无法编译。
添加回答
举报