0

例えば:

クラス コンストラクターを作成していて、配列を渡すことにした場合、"this" キーワードを使用してその配列を参照できますか?

private int[] a;
private int size;   

public Play(int[] a, int size)
{
this.a = a;
this.size = size;
}

私の最初の推測では、いいえです。データを配列に複製することはできない C++ と同じように動作するからです。私がそれを理解するのを手伝ってください。

4

4 に答える 4

3

Java言語仕様から

一次式として使用される場合、キーワード this は、インスタンス メソッドが呼び出されたオブジェクト (§15.12) または構築中のオブジェクトへの参照である値を示します。

this の型は、キーワード this が発生するクラス C です。

したがって、コンストラクターで使用すると、構築中のオブジェクトthisへの参照になります。Playを実行すると、オブジェクトのメンバーにアクセスするためにthis.someMember格納されている参照が逆参照されます。そのメンバーが配列であることは問題ではありません。thissomeMember

于 2013-11-12T02:38:43.640 に答える
1

現在のスコープ内の別の変数が同じ名前を共有していて、インスタンスを参照したい場合にのみ、これを使用する必要があります。a と this.a の間に違いはありません。

于 2013-11-12T02:36:57.583 に答える
1

を使用する場合this.aは、インスタンス変数を参照しますa。同じスコープ内に 2 つaのがありthis.a、インスタンス変数をa参照し、パラメーターとして渡されたローカル変数を参照します。

于 2013-11-12T02:39:11.487 に答える
1

はい、できます。1 つの参照変数に別の参照変数の値が割り当てられます。それらが指すオブジェクトは変更されず、新しいオブジェクトは構築されません。

だから何にもなりませんclone

于 2013-11-12T02:39:21.107 に答える