#java でこれを使用するのは何ですか
1. これは現在の属性を呼び出します: そのメインの機能は、クラス内のデータを初期化する必要がある場合、代入用の変数を定義する代わりに、これを通じて値を代入できることです。これにより、コードの読み取りと理解がより容易になります (推奨チュートリアル: java チュートリアル #)
class Book{//定义书的类 private String name;//书本名字 private int price;//书本价格 public Book(String name,int price){ //使用this对类的数据进行初始化 this.name = name; this.price = price; } /*public Book(String n,int p){ //若不使用this关键字只能这样进行赋值,不利于将变量与属性统一起来 name = n; price = p; }*/ public String getInfo(){ return "书籍:" + name + ",价格:" + price; } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
2. この呼び出しメソッド (通常のメソッド、コンストラクター)メソッド)
(1) 通常のメソッド:
class Book{//定义书的类 private String name;//书本名字 private int price;//书本价格 public Book(String name,int price){//使用this对类的数据进行初始化 this.name = name; 6 this.price = price; this.print();//调用本类普通方法,虽然可以不用使用this也可以进行本类普通方法的调用,但是好的习惯最好应该加上,目的是可以区分方法的定义来源 } public String getInfo(){ return "书籍:" + name + ",价格:" + price; } public void print(){ System.out.printIn("***********"); } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
(2) コンストラクター メソッド: 通常のメソッドとコンストラクター メソッドの違いは、コンストラクター メソッドは作成後に 1 回しか使用できないことです。データを初期化するのが通常の方法ですが、作成後に複数回呼び出すことができます。
同じ繰り返しコンテンツを出力するためにコンストラクター メソッドを使用する必要がある場合、this キーワードを使用しない場合は、次のコードのみを使用できます。
class Book{//定义书的类 private String name;//书本名字 private int price;//书本价格 public Book(){//无参构造 System.out.printIn("*************"); } public Book(String name){//一参构造 System.out.printIn("*************"); this.name = name; } public Book(String name,int price){//二参构造 System.out.printIn("*************"); this.name = name; this.price = price; } public String getInfo(){ return "书籍:" + name + ",价格:" + price; } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
明らかに、これは大幅な無駄です。コードの行数ですが、次のようにこれを使用してコンストラクター メソッドを呼び出す必要があります:
class Book{//定义书的类 private String name;//书本名字 private int price;//书本价格 public Book(){//无参构造 System.out.printIn("*************"); } public Book(String name){//一参构造 this();//调用本类中的无参构造 this.name = name; } public Book(String name,int price){//二参构造 this(name);//调用本类中的一参构造 this.price = price; } public String getInfo(){ return "书籍:" + name + ",价格:" + price; } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
注: これへの呼び出しはコンストラクター メソッドの最初のステートメントである必要があり、そうでない場合はエラーが発生します。の場合、コンストラクター メソッドを通常のメソッドで呼び出すことはできません。
最も重要なことは、これを呼び出すとループを形成できないこと、つまり、終了のない再帰呼び出しを形成できないことです。
3. this は現在のメソッドを表します
class Book{ public void fun(){ System.out.printIn("FUN方法"+this); } } } public class ThisDemo{ public static void main(String args[]){ Book b1 = new Book(); System.out.printIn("MAIN方法"+b1); b1.fun();//有b1调用fun方法(this = b1) //两个输出结果的地址一样,代表着此时this代表着b1 System.out.printIn("*************") Book b2 = new Book(); System.out.printIn("MAIN方法"+b2); b2.fun();//此时输出结果和b2一样 } }
プロセス全体を通じて、this の定義は変更されていません。特定のオブジェクトがこのクラスのメソッドを呼び出す限り、this の定義は変更されていません。 、この時点では、これは現在実行中のオブジェクトを表します。
以上がJavaでこれを使うのは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。