Java obj=新的A(新的B)的意思是什么;?

Java obj=新的A(新的B)的意思是什么;?,java,object,oop,Java,Object,Oop,方法1 AppMain.java A obja = new A(new B()); B objb = new B(); A obja = new A(objb); RandomClass.java B b; pubic A(B b){ this.b = b; } //same code 方法2 AppMain.java A obja = new A(new B()); B objb = new B(); A obja = new A(objb); RandomClass.java

方法1

AppMain.java

A obja = new A(new B());
B objb = new B();
A obja = new A(objb);
RandomClass.java

B b; 
pubic A(B b){
this.b = b;
}
//same code 
方法2

AppMain.java

A obja = new A(new B());
B objb = new B();
A obja = new A(objb);
RandomClass.java

B b; 
pubic A(B b){
this.b = b;
}
//same code 

方法1和方法2相同吗?

只有一个细微的区别,这两种方法是相同的(除了第一种方法中需要
新A(新B())
而不是
新A(新B)
)。不同之处在于,在第二种方法中,您最终会得到一个对
a
构造函数提供的
B
对象的单独引用(变量
objb
)。因此,方法1失败,方法2不失败——它们不同

如果您打算将其设置为
new B()
,但是您在发布问题时有点粗心,那么这些都是完全相同的
new B()
的意思是:创建一个新的B对象,然后该表达式计算为指向这个新创建的对象的引用。使用
newa(newb())
将此引用的副本传递给A构造函数。使用
objb=…
可以将此引用的副本分配给局部变量,然后调用a构造函数,将此引用的副本交给它


换句话说,这可以归结为完全相同的事情。

谢谢,也谢谢你指出了缺失的():)在方法1中,引用“obja”指向两个对象(新的A和新的B)?@PradiptaGhatak-引用
obja
指向新的
A
对象。在内部,
A
对象可能维护或不维护对传递给构造函数的
B
对象的引用;它是否存在取决于
对象的定义方式。Java中的引用总是
null
或引用单个对象。