为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中,如果我将方法参数作为 - 我的方法(我的对象引用)或我的方法,会有什么区别?

在Java中,如果我将方法参数作为 - 我的方法(我的对象引用)或我的方法,会有什么区别?

PIPIONE 2022-09-14 17:49:49
假设我的方法需要一个对象作为参数,两者之间会有什么区别吗?哪一个应该是首选?public static void methodOne(){   myMethod(new MyObject());}public static void methodOne(){  MyObject objRef = new MyObject();  myMethod(objRef);}
查看完整描述

5 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

在第一个示例中,您无法访问方法调用之后的实例,而在示例 2 中,由于将实例分配给变量,因此您仍然可以访问它。MyObject

因此,如果您需要/想要重用该实例,请以示例 2 为例。如果您只需要方法中的一个实例,则可以使用示例 1(尽管您也可以在 mthod ->根本没有参数)中将其固定)

第二个示例还为您提供了为对象提供有意义的标识符的机会。有时,这对可读性很有用。

关于第二个示例的另一件事:如果您对传递给该方法的实例执行更改,则这些更改将保留在您的methodOne


查看完整回答
反对 回复 2022-09-14
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

这两种方法执行完全相同的操作。第二个让你有机会给你的对象一个有意义的名字,以澄清一些事情。


查看完整回答
反对 回复 2022-09-14
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

取决于变量范围。


方法/函数的每个输入参数都作为值发送。但是,如果您将对象作为参数发送,则将其引用作为值发送。


public static void methodOne(){

  MyObject objRef = new MyObject();

  myMethod(objRef);

}

作为您的第二个代码示例,objRef 可以在整个 上使用。但是,在具有 void 返回的函数上进行修改是一个坏主意。methodOne()objRef


在第一个示例中,您发送了一个新对象(它使用其空的 param 构造函数启动),但您不能重用它。


查看完整回答
反对 回复 2022-09-14
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

如果你需要对对象有一个引用,你应该使用第二个选项,否则第一个选项会更好,因为你要创建一个传递给函数的“临时”变量,JVM可以在内存中做一些小的优化,因为你不保留对该变量的引用。另外,如果你不需要参考,我认为第二个选项提供了更具可读性的代码。


查看完整回答
反对 回复 2022-09-14
?
呼唤远方

TA贡献1856条经验 获得超11个赞

这取决于您要对该对象执行的操作。如果要在执行该方法后使用它,则需要将其分配为对象。


其他事项,您需要:


public static void methodOne(){

   myMethod(new MyObject());

}

否则,它将无法编译。


查看完整回答
反对 回复 2022-09-14
  • 5 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信