this
のコンストラクタ内でそれを使用することができますどのようにこのreferneceを持っていない場合は
私QUESです単にあなたが現在のオブジェクトを参照することを可能にするJavaキーワードです。どのクラスでも使用できます。
キーワードthis
を使用する目的は、ローカル変数を参照しないようにすることです。
両方が同じローカル変数(ないクラス変数)への参照であるためi = i
は、絶対に何もしませんので、それは、あなたの例で必要とされる:インスタンスメソッド内
:
From hereまたはコンストラクタで、これは現在のオブジェクト(メソッドまたはコンストラクタが呼び出されているオブジェクト)への参照です。インスタンスメソッドまたはコンストラクタ内から、現在のオブジェクトの任意のメンバを参照することができます。
EDIT:
私はあなたが実際のメモリアドレスについて尋ねてきたことを実感。それは実際に見ないように、
class Point
{
int x, y;
static Point getPoint(int x, int y)
{ Point this = allocateMemory(Point); this.x = x; this.y = y; }
static void move(Point this, int a, int b) { this.x = a; this.y = b; }
}
Point p = Point.getPoint(3,4);
Point.move(p, 1, 2);
(明示的this
を作る)が、これはすべての非常に低いレベルに次のようになります。
は私が
class Point
{
int x, y;
Point(int x, int y) { this.x = x; this.y = y; }
void move(int a, int b) { x = a; y = b; }
}
Point p = new Point(3,4);
p.move(1,2);
のようなものに変換される可能性があります想像しますこのような遠隔操作は可能ですが、それについて考えることができます。
あなたは正確なことを知っていますか?ところで、それはそれを持ってくれてありがとう.... –
@ T.J。いいえ、私はちょうど基本的なアイデア、何が起こるか分かりません。 – Dukeling