java this 三種用法


 1.區分成員變量和局部變量

    public class ThisDemo {
            public static void main(String[] args) {
                Student s=new Student("小明明",20);
                System.out.println(s);
            }
        }
        class Student{
            String name;
            int age;
            public Student(String name, int age) {
                //注:沒有加this
                name = name;
                age = age;
            }
            @Override
            public String toString() {
                return "Student [ name=" + name + ", age=" + age +"]";
            }
        }

    打印結果:Student [ name=null, age=0]
    賦值沒有成功,說明:name(局部變量)=name(局部變量);
    而不是name(成員變量)=name(局部變量);
     
    public Student(String name, int age) {
            //注:可以使用this進行區分成員變量和局部變量
            this.name = name;
            this.age = age;
    }

    打印結果:Student [ name=小明明, age=20]
    這樣子就可以賦值成功啦

2.代表當前對象

    public static void main(String[] args) {
                Student s=new Student("小明明",20);
                System.out.println(s);
        }
        //為什么加入this后就可以區分呢?
        因為this當前代表的是s實例(對象)相當於
        s.name="小明明";
        s.age="20";
        //再可以理解如下
        this.name=實例(對象).name="小明明";

3.構造器與構造器之間的調用

為Student再添加兩個構造器,修改后如下:

        class Student{
            String name;
            int age;
            int id;
     
            public Student(int id,String name, int age) {
                this.id = id;
                this.name = name;
                this.age = age;
            }
     
     
            public Student(String name, int age) {
                this.name = name;
                this.age = age;
            }
     
            public Student(String name) {
                this.name = name;
            }
     
            @Override
            public String toString() {
                return "Student [ id=" + id + ", name=" + name + ", age=" + age +"]";
            }
        }

    //構造器用法-->this();跟函數一樣()中可以寫參數
    構造器調用一般是這樣子用的.不同的構造器中存在相同代碼.為了復用性。可以在參數少的構造器中調用參數多的構造器,如下:

    class Student{
            String name;
            int age;
            int id;
            public Student(String name, int age, int id) {
                this.name = name;
                this.age = age;
                this.id = id;
                System.out.println("構造器3已調用");
            }
            public Student(String name, int age) {
                this(name,age,0);
                System.out.println("構造器2已調用");
            }
     
            public Student(String name) {
                this(name,0);//參數不足,就使用參數默認值補全
                System.out.println("構造器1已調用");
            }
            @Override
            public String toString() {
                return "Student [ id=" + id + ", name=" + name + ", age=" + age +"]";
            }
        }

    測試結果1:
        public static void main(String[] args) {
            Student s=new Student("小明明");
            System.out.println(s);
        }   
     
        構造器3已調用
        構造器2已調用
        構造器1已調用
        Student [ id=0, name=小明明, age=0]
     
    測試結果2:
        public static void main(String[] args) {
            Student s=new Student("小明明",20);
            System.out.println(s);
        }
        構造器3已調用
        構造器2已調用
        Student [ id=0, name=小明明, age=20]
     
    總結:這樣子可以在參數最多的構造器中編寫代表。其他構造器負責調用參數最多的那個構造器就好了

this的三種常見用法介紹完畢!怎么樣很容易吧.
---------------------
作者:Meliodasi
來源:CSDN
原文:https://blog.csdn.net/qq_38131751/article/details/81436398
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM