Javaこれ
Javaのこのキーワードの使用方法
Javaでコーディングを開始すると、キーワードthis
に気付くでしょう。 メソッドまたはコンストラクターで使用されています。 this
キーワードは、メソッドまたはコンストラクター内の現在のオブジェクトを参照し、Javaで幅広い用途があります。
このチュートリアルでは、Java thisキーワードと、それが使用される方法と理由について学習します。また、このキーワードの実際の動作を示すために、記事全体でいくつかの例を参照します。
Javaメソッドとコンストラクター
メソッドとコンストラクターは、Javaでのプログラミングの2つの重要な部分です。
関数、またはmethods
オブジェクト指向プログラミングで呼ばれるように、特定のタスクを実行するコードのブロックです。たとえば、メソッドを実行すると、配列の内容がコンソールに出力されたり、プログラムへのユーザー入力が容易になったりする場合があります。
これは、It’s Monday!
を出力するJavaのメソッドの例です。 コンソールへ:
public class PrintMessage { public static void main(String[] args) { System.out.println("It's Monday!"); } }
コードを実行すると、次の出力がコンソールに返されます:It’s Monday!
コンストラクターはメソッドに似ており、プログラムでオブジェクトがインスタンス化または作成されるときに呼び出されます。 day
というインスタンス変数の値を設定するコンストラクターの例を次に示します。 Monday
へ 月曜日のインスタンスがインスタンス化され、It’s
を出力するとき 、続いて曜日、コンソールへ:
class Monday { private Monday() { day = "Monday"; } public static void main(String[] args) { Monday day_of_the_week = new Monday(); System.out.println("It's " + day_of_the_week.day); } }
コードが返されます:It’s Monday!
参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。
平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。
コンストラクターについて詳しく知りたい場合は、Javaコンストラクターの完全ガイドをご覧ください。 Javaメソッドとコンストラクターの基本について説明したので、this
について説明します。 キーワードとそれをコードで使用する方法。
Javaこのキーワード
Javaでは、this
キーワードは、メソッドまたはコンストラクター内の現在のオブジェクトを参照します。
これを説明するために、曜日をコンソールに出力する上記のコンストラクターの例を使用してみましょう。以下の例では、this
の値を出力しています。 およびMonday()
の値 インスタンス化したオブジェクト:
class Monday { private String day; private Monday() { day = "Monday"; System.out.println(this); } public static void main(String[] args) { Monday day_of_the_week = new Monday(); System.out.println("It's " + day_of_the_week.day); System.out.println(day_of_the_week); } }
コードは次を返します:
Main@d716361 It's Monday Main@d716361
出力の最初の行は、this
の値です。 、Monday()
のときにコンソールに出力されます オブジェクトがインスタンス化されます。出力の2行目は、It’s
を印刷した結果です。 、その後にday
の値が続きます day_of_the_week
で 宣言したオブジェクト。最後に、day_of_the_week
の値を出力します オブジェクト。
ご覧のとおり、this
の値 およびday_of_the_week
オブジェクトは同じです。これは、this
キーワードは、メソッドまたはコンストラクター内の現在のオブジェクトを参照します。
Javaのこのユースケース
thisキーワードを使用することが有益である主な状況は2つあります。これらは次のとおりです。
- これを使用して変数名を明確にします
- これを引数として渡す
thisキーワードの変形、this()
、コンストラクターをオーバーロードするときにも使用されます。ただし、これはこれのより高度な使用法であるため、この記事では説明しません。
これを使用して変数名を明確にする
Javaのスコープ内で2つ以上の変数に同じ名前を付けることはできません。つまり、2つの変数を宣言して同じ名前を使用しようとすると、プログラムのロジックが影響を受けます。
ただし、this
を使用することで、この制限を回避できます。 方法。 this
オブジェクトに特定の変数を割り当てることができます。これにより、オブジェクト内の変数の値と初期変数の値の両方を格納できます。
これがどのように機能するかを説明するために、例を見ていきましょう。 5年生のクラスで優等生に追加されている生徒の名前を追跡するプログラムを作成しているとします。このアプリケーションは、生徒の名前をコンソールに出力する必要があります。
このアプリケーションを構築するために使用するコードは次のとおりです。
class HonorRoll { String studentName; HonorRoll(String studentName) { this.studentName = studentName; } public static void main(String[] args) { HonorRoll alex = new HonorRoll("Alex"); System.out.println("New honor roll inductee: " + alex.studentName); } }
プログラムを実行すると、以下が返されます。
New honor roll inductee: Alex
この例では、this
を使用します HonorRoll
で生徒の名前を追跡する 方法。次のコード行を使用して、studentName
の値を割り当てます。 コンストラクターパラメーター(Alex
) 上記の例では)変数this.studentName
。これを行わなかった場合、次のように返されます。
New honor roll inductee: null
これは、HonorRoll
のために 学生の名前を保存する方法では、this
を使用する必要があります Javaコンパイラからあいまいさを取り除くため。したがって、this
という単語を削除すると コードから、null値を取得します。
これを引数として渡す
this
キーワードは、メソッドまたはコンストラクター内の現在のオブジェクトを別のメソッドに渡すためによく使用されます。
地元の喫茶店に在庫があるコーヒー豆の袋の数を追跡するアプリケーションを構築しているとします。このアプリケーションでは、コーヒーショップの所有者が、在庫のあるバッグの合計に追加できるようにする必要があります。これは、在庫が増えたときに使用されます。このアプリケーションを作成するために使用できるコードは次のとおりです。
class AddStock { int stockToAdd; int stockTotal; AddStock(int stockToAdd, int stockTotal) { this.stockToAdd = stockToAdd; this.stockTotal = stockTotal; System.out.println("Current stock: " + this.stockTotal); calculateNewStock(this); System.out.println("New stock: " + this.stockTotal); } void calculateNewStock(AddStock s) { s.stockTotal += s.stockToAdd; } } class Main { public static void main(String[] args) { AddStock newStockValue = new AddStock(10, 9); } }
コードは次のようになります:
Current stock: 9 New stock: 19
コードを分解してみましょう。このコードでは、AddStock
というクラスを定義しました。 。このクラスには、stockToAdd
という2つの値を受け取るメソッドが含まれています。 およびstockTotal
-そしてcalculateNewStock()
を呼び出します コーヒーショップに在庫があるコーヒーの袋の数を計算する方法。
次に、Main()
を使用します AddStockクラスのインスタンスを初期化し、2つの値(10と9)を一緒に追加するクラス。プログラムの実行後、コードは指定した2つの値(それぞれ追加する在庫と現在の在庫合計)を追加し、両方を出力します。現在の在庫とコンソールへの改訂された在庫レベル。
この例では、this
calculateNewStock()
を呼び出すときに、キーワードが引数として使用されます 方法。これにより、AddStockクラスで使用している変数をcalculateNewStock()
に渡すことができます。 メソッド。改訂された在庫レベルを計算するためにこれらの変数が必要です。
結論
Javaのthisキーワードは、メソッドまたはコンストラクター内の現在のオブジェクトを参照します。 Javaでは、thisキーワードには2つの主な用途があります。変数名を明確にすることと、これを引数として渡すことです。
このチュートリアルでは、例を参照して、これら3つのコンテキストでJavathisキーワードを使用する方法について説明しました。これで、専門家のようにこのキーワードでJavaを使い始めるために必要な知識を身に付けることができました。
-
SwingはJavaでスレッドセーフですか?
いいえ、 Java Swing コンポーネントはJavaではスレッドセーフではありません。 Swingコンポーネントがスレッドセーフではない理由 Java Swingがスレッドセーフではない主な理由の1つは、そのコンポーネントを拡張するタスクを簡素化することです。 Java Swingのもう1つの理由は、ロックの取得と解放、および状態の復元に伴うオーバーヘッドのため、スレッドセーフではありません。 。 一部のJavaSwingコンポーネントメソッドは、 repaint()、revalidate()などのマルチスレッドアクセスをサポートします。 、および invalidate()メソッド
-
Javaでこれへの参照を割り当てることは可能ですか?
「これ」 Javaのキーワードは、インスタンスメソッドまたはコンストラクター内で現在のオブジェクトへの参照として使用されます。これを使用すると、コンストラクター、変数、メソッドなどのクラスのメンバーを参照できます。 「これ」への参照の割り当て 定義によるとthis 現在のオブジェクト(コンストラクター/メソッドを使用しているオブジェクト)への参照として機能するキーワードであり、その値IDは固定されています。したがって、新しい参照値を割り当てることはできません。さらに、これは単なるキーワードであり、変数ではありません。 それでも、それを行おうとすると、 thisに参照値を割り当て