Java 你能用这个吗;这一点;关键字引用数组?
例如: 若您正在编写一个类构造函数并决定要传递一个数组,那个么可以使用“this关键字”来引用该数组吗Java 你能用这个吗;这一点;关键字引用数组?,java,constructor,this,Java,Constructor,This,例如: 若您正在编写一个类构造函数并决定要传递一个数组,那个么可以使用“this关键字”来引用该数组吗 private int[] a; private int size; public Play(int[] a, int size) { this.a = a; this.size = size; } 我最初的猜测是否定的,因为它的作用类似于C++,在这里你不能把数据克隆到数组中。请帮助我理解它。 你只需要在当前范围内的另一个变量共享同一个名字,并且你想引用这个实例时使用它。A和这个之
private int[] a;
private int size;
public Play(int[] a, int size)
{
this.a = a;
this.size = size;
}
我最初的猜测是否定的,因为它的作用类似于C++,在这里你不能把数据克隆到数组中。请帮助我理解它。
你只需要在当前范围内的另一个变量共享同一个名字,并且你想引用这个实例时使用它。A和这个之间没有区别。当当前范围内的另一个变量共享相同的名称,并且您希望引用该实例时,请执行此操作。a和this之间没有区别。a 当用作主表达式时,关键字this表示一个值 这是对为其创建实例方法的对象的引用 调用(§15.12),或调用正在构造的对象 它的类型是C类,关键字this出现在C类中 因此,当您在构造函数中使用this
时,它是对正在构造的Play
对象的引用。当您使用this.someMember
时,您将取消引用存储在this
中的引用,以访问对象上的成员someMember
。该成员是数组并不重要。<>
当用作主表达式时,关键字this表示一个值
这是对为其创建实例方法的对象的引用
调用(§15.12),或调用正在构造的对象
它的类型是C类,关键字this出现在C类中
因此,当您在构造函数中使用
this
时,它是对正在构造的Play
对象的引用。当您使用this.someMember
时,您将取消引用存储在this
中的引用,以访问对象上的成员someMember
。该成员是数组并不重要。<>当您使用this.a
时,它指的是实例变量a
。在同一范围内,现在有两个a
,this.a
将指的是实例变量,a
将指作为参数传递的局部变量。当您使用this.a
时,它指的是实例v变量a
。在同一范围内,现在有两个a
,这是。a
将引用实例变量,a
将引用作为参数传递的局部变量。是的,您可以。一个引用变量将被分配另一个引用变量的值。它们指向的对象是不会更改,也不会构造新对象
因此它不会克隆任何东西。是的,您可以。一个参考变量将被分配另一个参考变量的值。它们指向的对象不会更改,也不会构造新对象
所以它不会克隆任何东西。为什么不试试看它是否有效呢?数组变量是一个指向数组的指针。所以说
this.a=a
就是赋值this.a
指向同一个数组。没有复制。我试过了,但就像答案和注释中提到的那样,它不会做任何事。不过,我现在确实明白了它是如何工作的。与C不同,在Java中,数组是一个完整的对象,它的引用可以是与任何其他对象一样进行签名。但是,与其他对象一样,必须理解被分配的是引用(指针),而不是数组本身。为什么不试试看它是否有效?数组变量是(用C表示)一个指向数组的指针。所以说this.a=a
就是赋值this.a
指向同一个数组。没有复制。我试过了,但就像答案和注释中提到的那样,它不会做任何事。不过,我现在确实明白了它是如何工作的。与C不同,在Java中,数组是一个完整的对象,它的引用可以是像任何其他对象一样签名。但是,与其他对象一样,必须理解它是引用(指针)而不是数组本身。实际上,在构造函数中会有差异。a将引用传入的值,而这。a将引用实例变量。实际上,在构造函数中会有差异。a将引用传入的值,而这。a将引用实例v可变的。