Java 你能用这个吗;这一点;关键字引用数组?

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和这个之

例如:

若您正在编写一个类构造函数并决定要传递一个数组,那个么可以使用“this关键字”来引用该数组吗

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可变的。