java - java中这两个构造函数有什么区别? (内存)

标签 java this

在此代码中

public class Base {
    int length, breadth, height;

    Base(int l, int b, int h) {
        length = l;
        breadth = b;
        height = h;
    }
}

Base(int l, int b, int h) {
    this.length = l;
    this.breadth = b;
    this.height = h;
}

这两个构造函数初始化有什么区别? 哪种方法是最受青睐的? 它在内存分配方面有何变化?

最佳答案

没有什么区别。在第一个构造函数中,您只需省略 this,而在第二个构造函数中,您可以显式指定它。生成的字节码是完全一样的(你可以检查一下)。如果你想放或不放它,这只是一个风格问题,除非该字段与参数具有相同的名称,在这种情况下 this 是强制性的以避免歧义,例如:

Base(int length,int breadth,int height) {
   this.length = length;
   this.breadth = breadth;
   this.height = height;
}

(请明智地使用空格,这会使您的代码更具可读性)。

关于java - java中这两个构造函数有什么区别? (内存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22557494/

相关文章:

javascript - 使用纯JS仅对某个类的一个div调用函数

python - 在 C++ 中,不应该有一个类似于 'this' 指针的名称不可知的类指针供成员函数引用吗?

java - 从 JApplet 关闭 JFrame

java - Android Studio 找不到java编译器

java - 如何在Java中制作动态二维数组?

net.java.ao.Entity 中的 java.util.Date

javascript - 如何使用 'this' 变量检索*不*调用函数的元素的 id

java - 查询 AD 以获得无限结果

C++ this 和常量对象

java - 将句柄传递给 java 中的子类时,我应该使用声明还是 this() ?