これは、クラス インスタンス自体を表すためにクラス内で使用されます。
このキーワードはクラス内でのそれ自体への参照であり、これによりクラス内のメソッドがその独自のプロパティにアクセスしやすくなります。
java での this の使用法
1. ローカル変数とメンバー変数が同じ名前の場合、メソッド内でこれを使用します。 . 区別するメンバー変数。
class Demo{ String str = "这是成员变量"; void fun(String str){ System.out.println(str); System.out.println(this.str); this.str = str; System.out.println(this.str); } } public class This{ public static void main(String args[]){ Demo demo = new Demo(); demo.fun("这是局部变量"); } }
分析: 上記のクラス Demo にはメンバー変数 str とローカル変数 str (クラスメソッドの仮パラメーター) があり、ローカル変数とメンバー変数が同じ名前であることは明らかです。このとき、通常、メソッド内で str を直接使用すると、実際にはローカル変数 str が使用されますが、メンバー変数 str には影響しません。このとき、メンバー変数で何かを行う必要がある場合は、this を使用する必要があります。キーワード。
質問なのですが、メソッド内に str がない場合、メソッド内でメンバー変数 str を使用するとどうなりますか?実際、メソッド内のすべての操作はメンバー変数 str に対して実行されます。 『Javaプログラミング考』の84ページ中段に、メソッド内で同じクラスの別のメソッドを呼び出す場合は、これを使用する必要はありませんという一文があります。同様に、メソッド内に同じ名前のローカル変数とメンバー変数がない場合、このメソッドでメンバー変数を使用するときにこれを使用する必要はなく、次のコードを実行して確認できます。
class Demo{ String str = "这是成员变量"; void fun(String str1){ System.out.println(str1); System.out.println(str); } } public class This{ public static void main(String args[]){ Demo demo = new Demo(); demo.fun("这是局部变量"); } }
2. このキーワードは、現在のオブジェクトを他のメソッドに渡します
ここには非常に古典的な例があり、『Java Programming Thoughts』の 85 ページにある例です。取り出してじっくり調べてみましょう。
class Person{ public void eat(Apple apple){ Apple peeled = apple.getPeeled(); System.out.println("Yummy"); } } class Peeler{ static Apple peel(Apple apple){ //....remove peel return apple; } } class Apple{ Apple getPeeled(){ return Peeler.peel(this); } } public class This{ public static void main(String args[]){ new Person().eat(new Apple()); } }
これは私自身の理解です。正しくない可能性があります。本の内容を参照してください: Apple は Peeler.peel() メソッドを呼び出す必要があります。何らかの理由で Apple の外部に配置する必要がある操作を実行する外部ユーティリティ メソッド (おそらく、その外部メソッドが多くの異なるクラスに適用され、コードを複製したくないため)。自分自身を外部メソッドに渡すには、this キーワードを使用する必要があります。
分析: シナリオを想像してください。さまざまな果物の皮をむく作業が同じであれば、果物を与えていただければ、私も同じ方法で皮をむきます。次に、上記の例と組み合わせると、フルーツが渡されます。 getPeeled() を実行する前に、このフルーツをパラメーターとして外部の peel() に渡し、これを使用してそれ自体を表し、外部メソッドに渡す必要があります。
3. 現在のオブジェクトへの参照を返す必要がある場合、多くの場合、メソッドに return this を記述します。
このアプローチの利点は次のとおりです。オブジェクトを使用して呼び出す このメソッドは変更されたオブジェクトを返し、そのオブジェクトを使用して他の操作を実行できます。したがって、オブジェクトに対して複数の操作を簡単に実行できます。
public class This{ int i = 0; This increment(){ i += 2; return this; } void print(){ System.out.println("i = " + i); } public static void main(String args[]){ This x = new This(); x.increment().increment().print(); } }
結果は:
4
4. コンストラクターでコンストラクターを呼び出すときは、これを使用する必要があります
クラスには多数のコンストラクターがありますコードの重複を避けるために、1 つのコンストラクター内で他のコンストラクターを呼び出したい場合は、this キーワードを使用できます。 Java プログラミングの考え方には次のような格言があります。通常、これを記述するときは、「このオブジェクト」または「現在のオブジェクト」を指し、それ自体が現在のオブジェクトへの参照を表します。コンストラクター内で、これにパラメーター リストを追加すると、意味が異なります。これにより、この引数リストに一致するコンストラクターが明示的に呼び出され、他のコンストラクターを呼び出すための直接パスが提供されます。
慎重な分析:
main 関数から開始して、new Flower() はメモリ内にスペースを割り当て、オブジェクトを初期化します。コンストラクターを呼び出します。ここではパラメーターは書き込まれません。もちろん、パラメーターなしのコンストラクターであるデフォルトのコンストラクターが呼び出されます。
このパラメーターなしコンストラクターのコードの最初の行は this("hi",122) です。これが意味するのは、パラメーターなしコンストラクターは 2 つのパラメーターを指定してコンストラクターを呼び出し、2 パラメーターのコンストラクターの場合、コードの最初の行は this(s) です。このコード行は 1 つのパラメーターを持つコンストラクターと自動的に照合し、Fflower(String ss) が照合し、両方とも String 型パラメーターであることがわかります。
次に、String 型パラメーターを持つコンストラクターが呼び出され、次のように出力されます: String 型パラメーターのみを持つコンストラクター s = hi
; その後、前のレベルに戻って関数を呼び出します。 with 2 つのパラメーターを持つコンストラクターは、次のように出力します: String および int 型のパラメーターを持つコンストラクター
; パラメーターのないコンストラクターである前のレベルに戻り、次のように出力します: Default constructionor
。
この時点で、コンストラクターは新しく作成されたオブジェクトを初期化し、最終的に main 関数のコードの最後の行に petalCount=122 s=hi
を出力します。
絵を描いてもっとはっきりと見てみましょう。
注意すべき点がいくつかあります:
1、これは 1 つのコンストラクターのみを呼び出すことができ、同時に 2 つを呼び出すことはできません。 1 つのコンストラクター コンストラクター;
2, 呼び出すコンストラクターは先頭に置く必要があります。これは、1 つのコンストラクターで 2 つのコンストラクターを呼び出すことができない理由も説明しており、2 番目のコンストラクターを先頭に置くことはできません。
3. この例では、2 つのパラメーターを持つコンストラクターで、これを使用して 1 つのパラメーターだけを持つ他のコンストラクターを呼び出すことができます。
4. コンストラクター以外のメソッドでコンストラクターを呼び出すために使用することはできません。コード内のコメントを正しくコンパイルできません。
#この概要
1. 現在のオブジェクトへの参照を示します。 2. 関数パラメーターの代わりにクラス メンバー変数を使用することを示します。 3. コンストラクター内で指定されたパラメーターの型を満たすコンストラクターを参照するために使用されます (実際にはコンストラクターでもあります)。ただし、ここでは非常に注意する必要があります。参照できるコンストラクターは 1 つだけであり、それは先頭になければなりません。 4. これは現在のオブジェクトを参照し、static にはオブジェクトがないため、これを静的メソッドで使用することはできません。 php 中国語 Web サイト、無料のJava 入門チュートリアル が多数あり、オンラインで学習することを歓迎します。
以上がこれはJavaでは何を意味するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
