このキーワードは、Javaで理解するのが非常に難しいと思う概念です。 :)多分それはあまりにも愚かだからです
このキーワードの意味:対応するハンドルは、メソッドが呼び出されたオブジェクトに対して生成できます。
この一節をどのように理解していますか?
Javaで思考にはそのような例があります
それぞれAとBと呼ばれる同じタイプの2つのオブジェクトがあります。では、メソッドf()を呼び出すときに、この方法を呼び出す人をどのように区別しますか?
例えば:
クラスバナナ{void f(int i){/*** body *****/}} banana a = new banana(); // banana object abanana b = new banana(); // banana object ba.f(1); bf(2);では、コンパイラはどのオブジェクトのf()関数を呼び出しているかをどのように把握していますか?実際、舞台裏のテレポーテーションは次のとおりです。
af(1)<< ==== >> banana.f(a、1); bf(1)<< ==== >> banana.f(b、2);
私はそれを理解しています:バナナオブジェクトを生成するときa。 Aのメソッドf()を呼び出すと、このオブジェクトを指すハンドルが同時に生成されます。
以下は、このポインティングオブジェクトの新しいbanana()です。これは、aを処理するのと同等です。この「==」a;
私たちが方法の中にいるとき。そして、現在のオブジェクトのハンドルを取得したいと考えています。このハンドルは密かにコンパイラーによって渡されるため、それを識別する明確なシンボルはありません。現時点では、これをキーワードを使用できます
これの一般的な意味:生成されたオブジェクトがこのメソッドを呼び出しても、このオブジェクトへのポインターが生成されます。
Javaでの思考の古典的な例:
パブリッククラスリーフ{private int i = 0; leaf increment(){i ++; return this;} void print(){systme.out.println( "i ="+i); public static void main(string [] args){leaf x = new Leaf(); x.increment()。1.オブジェクトのハンドルxを生成します。構文形式はLeaf Xです。
2。リーフクラスオブジェクトを生成します。構文形式はnew Leaf()です。
3.ハンドルとオブジェクトの間に接続を確立します。構文はx = new Leaf()です。
4。オブジェクトのnew Leaf()のメソッドincrement()を呼び出します。構文はx.increment()です
メソッドincrement()を誰が呼んだのですか?これは、リーフクラスのオブジェクトx(またはnew Leaf())であるため、対応するシステムはこれを参照し、xまたはnew Leaf()オブジェクトを密かに指します。メモリアドレスです。印刷して見ることができます!
上記のコンテンツは、編集者が紹介したJavaのこのキーワードの知識です。それがあなたに役立つことを願っています!