このキーワード Java

⚡ スマートサマリー

Java this キーワードは、メソッドまたはコンストラクタ内で現在のオブジェクトを指す参照変数です。 Less本書では、目的、一般的な使用方法、命名の衝突、コンストラクタの連鎖、および具体的な例について解説します。

  • 🔑 定義: これは、クラスの現在のインスタンスを参照します。
  • 🧱 競合を解決する: インスタンス変数と、同じ名前のパラメーターを区別するには、this.field を使用します。
  • 🪜 コンストラクタの使用法: this() は、よりクリーンな初期化のために、同じクラスの別のコンストラクタを呼び出します。
  • パスとリターン: これを引数として渡すか、メソッドチェーンをサポートするために返してください。
  • 🧪 実例: Accountクラスは、パラメータのシャドウイングによって発生するゼロ出力の問題をどのように解決するかを示しています。
  • 🤖 AI 支援: AIコーディングツールは、欠落しているthisプレフィックスを検出し、正確なリファクタリングを提案します。

このキーワード Java

このキーワードは何ですか Java?

その このキーワード Java メソッドまたはコンストラクターの現在のオブジェクトを参照する参照変数です。 このキーワードを使用する主な目的は、 Java 目的は、同じ名前を持つクラス属性とパラメータ間の混乱を解消することです。

このキーワードの使用 Java

以下は、this キーワードのさまざまな使用例です。 Java:

  • これは、現在のクラスのインスタンス変数を参照するために使用できます。
  • これは、現在のクラスのコンストラクタを呼び出す、または開始するために使用できます。
  • メソッド呼び出しの引数として渡すことができます。
  • コンストラクタ呼び出しの引数として渡すことができます。
  • これは、現在のクラスインスタンスを返すために使用できます。

詳しくはこちら こちら ビデオにアクセスできない場合

このキーワードを理解するための例

このキーワード Java
Java このキーワードの例

  1. CLASS: クラスアカウント
  2. インスタンス変数: a と b
  3. メソッドセットデータ: a と b の値を設定します。
  4. メソッド データを表示する: a と b の値を表示します。
  5. 主な方法: ここでは、Account クラスのオブジェクトを作成し、set data メソッドと show data メソッドを呼び出します。

コンパイラの混乱を乗り越える

それでは、コードをコンパイルして実行してみましょう。

A と B の予想される出力は、それぞれ値 2 と 3 に初期化される必要があります。

しかし、値は0です。なぜでしょうか?調べてみましょう。

このキーワード Java

メソッド Set data では、引数は a と b として宣言され、インスタンス変数も a と b という名前になります。

このキーワード Java

実行時にコンパイラは混乱します。代入演算子の左辺にある「a」がインスタンス変数なのかローカル変数なのかが判断できないためです。そのため、set data メソッドが呼び出されても「a」の値は設定されません。

このキーワード Java

解決策はthisキーワードです。

「a」と「b」の両方に Java このキーワードの後に​​ドット (.) 演算子が続きます。

このキーワード Java

コード実行中にオブジェクトがメソッド setdata を呼び出すと、キーワード this はオブジェクトハンドラ「obj」に置き換えられます。(下の画像を参照。)

このキーワード Java

これでコンパイラは次のように認識します。

  • 左辺の「a」はインスタンス変数です。
  • 一方、右辺の「a」はローカル変数である。

その variables が正しく初期化され、期待される出力が表示されます。

このキーワード Java

コンパイラが複数のオブジェクトをどのように処理するか

インスタンス変数とメソッド引数に異なる名前を付けると仮定します。

このキーワード Java

ただし、今回は、クラスの XNUMX つのオブジェクトを作成し、それぞれが set data メソッドを呼び出します。

コンパイラは、オブジェクト1のインスタンス変数とオブジェクト2のインスタンス変数のどちらを処理対象とするかをどのように判断するのでしょうか?

このキーワード Java

まあ、 コンパイラが暗黙的に追加する thisキーワードを持つインスタンス変数(下の画像参照)。

このキーワード Java

オブジェクト 1 が set data メソッドを呼び出しているときに、インスタンス変数がその参照変数によって追加されるようにします。

このキーワード Java

オブジェクト 2 が set data メソッドを呼び出している間に、オブジェクト 2 のインスタンス変数が変更されます。

このキーワード Java

コンパイラがこれを自動的に処理します。特別な場合を除き、this キーワードを明示的に追加する必要はありません。

例: このキーワードは Java 自律的AI Code

例: このキーワードの使い方を学ぶには。

ステップ1) 次のコードをメモ帳にコピーします。

class Account{
int a;
int b;

 public void setData(int a ,int b){
  a = a;
  b = b;
 }
 public void showData(){
   System.out.println("Value of A ="+a);
   System.out.println("Value of B ="+b);
 }
 public static void main(String args[]){
   Account obj = new Account();
   obj.setData(2,3);
   obj.showData();
 }
}

ステップ2) コードを保存、コンパイル、実行してください。

ステップ3) aとbの値がゼロと表示されていますか?エラーを修正するには、6行目と7行目に以下を追加してください。 この キーワード。

this.a =a;
this.b =b;

ステップ4) コードを保存、コンパイル、実行してください。今回は、aとbの値はそれぞれ2と3に設定されます。

よくあるご質問

this キーワードは、現在メソッドまたはコンストラクタが実行されているオブジェクトを参照します。これにより、コードはそのオブジェクト自身のインスタンスフィールドとメソッドにアクセスできます。

いいえ。thisキーワードはインスタンスに属するものであり、静的メソッドはクラスレベルに存在します。静的メソッド内でthisを使用すると、コンパイル時エラーが発生します。

this() は、最初のステートメントと同じクラスの別のコンストラクタを呼び出します。これにより、コードの重複を回避し、1 つのコンストラクタがセットアップ処理をオーバーロードされたコンストラクタに委譲できるようになります。

AIコーディングアシスタントは、シャドウパラメータを検出し、不足しているthisプレフィックスを追加し、this()チェーンとthisを返す流暢なセッターを使用するようにコンストラクタを書き換えます。

AIチューターは、オブジェクトの同一性を説明し、インスタンススコープとローカルスコープの違いを示し、thisキーワードをいつ使用すべきかを強化するクイズ付きの段階的な例を作成します。

私たちの記事をチェックしてください Java インタビューの質問:- こちらをクリックしてください