Javaでこれを使うのは何ですか

藏色散人
リリース: 2019-11-13 11:29:12
オリジナル
4498 人が閲覧しました

Javaでこれを使うのは何ですか

java これは何に使用されますか?

java におけるこのキーワードの役割

1。これは現在の属性を呼び出します。その主な機能は、クラス内のデータを初期化する必要がある場合です。割り当て用の変数を定義するだけでなく、これを通じて値を割り当てることができ、コードの読み取りと理解がより容易になります。

例:

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 回のみ使用されます。

コンストラクター メソッドを使用して同じ繰り返しコンテンツを出力する必要がある場合、このキーワードを使用しない場合は、次のコードのみを使用できます:

コードをコピー

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート