它有什么区别?
让我们认为我们在java中有一个方法如下:
void demoMethod(MyClass mc){
// some operations
}
第一种:
demoMethod(new MyClass()); // directly passing an object
第二类:
MyClass mc = new MyClass();
demoMethod(mc); // passing reference of an object
在该引用上的方法行为没有差异。第一个代码可以在语义上转换为第二个代码。最终,使用new MyClass()
创建的对象需要存储在某个地方,以便可以重新加载并传递给方法。
但是,使用第二个代码可以重用引用。
这对demoMethod
没有任何区别。事实上,在这两种情况下,您都只是传递引用。
但是,如果您想在demoMethod
在调用方法中执行某些操作后使用这些信息,那么在第一种类型中就不能这样做。
假设您的demoMethod
将MyClass
对象的一个属性设置为true或false,则您无法找到它的值设置为什么。
所以,你可以做一些类似的事情
demoMethod(mc);
if(mc.isMyProperty()==true)
System.out.println("mc is changed");