Java - 设置字段是否分配另一个内存?

标签 java

我有一个类似于下面的代码。

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?
另一个问题是这条线是否通过引用传递并且确实通过了
通过引用可以很好地内存吗?

最佳答案

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

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

Another question is does this line is passed by reference and does passed by reference is good in memory?

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

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

因此,就内存布局而言,传递一个对象与传递一个long 是一样的。

关于Java - 设置字段是否分配另一个内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25614858/

相关文章:

java - URL 中的 Thymeleaf 2 表达式

java - Tomcat 网络套接字不工作

java - Arrays.sort() 从我的数组中删除许多项目

java - 使用 Java couchbase SDK 更新多个文档

java - Fragment 的什么生命周期方法执行 AsyncTask?

java - 自动为 Junit 创建数据

java - 使用 Java 泛型进行类型强制

Java可移植媒体检测

java - 如何在ActionBar中创建二级下拉列表?

java - ListSelectionListener 中的 valueChanged 不起作用