区别于;分配对象后传递引用";及;使用新关键字“传递对象”;在java中创建一个方法?

区别于;分配对象后传递引用";及;使用新关键字“传递对象”;在java中创建一个方法?,java,oop,object,reference,Java,Oop,Object,Reference,这有什么区别 让我们假设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 方法在该引用上的行为没有差异。第一个

这有什么区别

让我们假设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()
创建的对象需要存储在某个地方,以便重新加载并传递给该方法


但是,使用第二个代码可以重复使用引用。

该引用上的方法行为没有区别。第一个代码可以在语义上转换为第二个代码。最后,使用
new MyClass()
创建的对象需要存储在某个地方,以便重新加载并传递给该方法


但是,使用第二个代码可以重复使用引用。

这对
demoMethod
没有任何影响。实际上,在这两种情况下,您只传递引用

但是,如果要在调用方法中执行某些操作后使用信息,则不能在第一种类型中执行

假设您的
demoMethod
MyClass
对象的属性设置为true或false,那么您没有任何方法来确定它的值设置为什么

所以,你可以这样做

demoMethod(mc);
if(mc.isMyProperty()==true)
   System.out.println("mc is changed");

这对
demoMethod
没有任何影响。实际上,在这两种情况下,您只传递引用

但是,如果要在调用方法中执行某些操作后使用信息,则不能在第一种类型中执行

假设您的
demoMethod
MyClass
对象的属性设置为true或false,那么您没有任何方法来确定它的值设置为什么

所以,你可以这样做

demoMethod(mc);
if(mc.isMyProperty()==true)
   System.out.println("mc is changed");

唯一的区别是以后可以使用
mc
。除了将mc声明为一个单独的变量之外,没有其他区别。您仍在向该对象传递引用的值。唯一的区别是您可以稍后使用
mc
。除了将mc声明为单独的变量之外,没有其他区别。您仍在传递对该对象的引用的值。