我有一个代码,看起来像下面的代码。

public class Controller {
    public void test(){
        Model1 model1 = new Model1();
        Test test = new Test(model1);

    }
}

public class Test {
    private Model1 model1;

    public Test(Model1 model1) {
        this.model1 = model1;//this line
    }

    public Model1 getModel1() {
        return model1;
    }

    public void setModel1(Model1 model1) {
        this.model1 = model1;
    }

}
public class Model1 {
    private String field1;
    private String field2;
    public String getField1() {
        return field1;
    }
    public void setField1(String field1) {
        this.field1 = field1;
    }
    public String getField2() {
        return field2;
    }
    public void setField2(String field2) {
        this.field2 = field2;
    }

}


我只想知道,这段代码实际上创建了多少Model1?
另一个问题是该行是否通过引用传递并通过
通过引用是否具有良好的记忆力?

最佳答案

不,分配给字段不会分配内存。

仅当您(直接或间接)调用构造函数时才创建对象。


  另一个问题是该行是否通过引用传递并通过
  通过引用是否具有良好的记忆力?


从技术上讲,Java中的所有内容都是按值传递的。

但是,对于对象,此值是对对象的引用(不是其内容的副本)。

因此,就内存布局而言,传递对象与传递long相同。

10-04 23:14