Java中this讲解

【1】创建对象的过程:
(1)在第一次遇到一个类的时候,对这个类要进行加载,只加载一次。
(2)创建对象,在堆中开辟空间
(3)对对象进行初始化操作,属性赋值都是默认的初始值。
(4)new关键字调用构造器,执行构造方法,在构造器中对属性重新进行赋值

this:

在这里插入图片描述

在这里插入图片描述

从上面的效果能够看到:this指代的就是当前对象:

内存:

在这里插入图片描述

this关键字 用法:
(1)this可以修饰属性:
总结:当属性名字和形参发生重名的时候,或者 属性名字 和局部变量重名的时候,都会发生就近原则,所以如果我要是直接使用变量名字的话就指的是离的近的那个形参或者局部变量,这时候如果我想要表示属性的话,在前面要加上:this.修饰

如果不发生重名问题的话,实际上你要是访问属性也可以省略this.

public class Person {
    
    
    //属性
    int age;
    String name;
    double height;
    //空构造器
    public Person(){
    
    
    }
    //有参构造器
    public Person(int age,String name,double height){
    
    
        this.age = age;
        this.name = name;
        this.height = height;
    }
    //方法:
    public void eat(){
    
    
        int age = 10;
        System.out.println(age);//就近原则,age指的是离它近的age--》局部变量的age
        System.out.println(this.age);//这里指代的就是属性的age
        System.out.println("我喜欢吃饭");
    }
}

(2)this修饰方法:
总结:在同一个类中,方法可以互相调用,this.可以省略不写。

public class Person {
    
    
    //属性
    int age;
    String name;
    double height;
    //空构造器
    public Person(){
    
    
    }
    //有参构造器
    public Person(int age,String name,double height){
    
    
        this.age = age;
        this.name = name;
        this.height = height;
    }
    //方法:
    /*public void eat(){
        int age = 10;
        System.out.println(age);//就近原则,age指的是离它近的age--》局部变量的age
        System.out.println(this.age);//这里指代的就是属性的age
        System.out.println("我喜欢吃饭");
    }*/
    public void play(){
    
    
        /*this.*/eat();
        System.out.println("上网");
        System.out.println("洗澡");
    }
    public void eat(){
    
    
        System.out.println(/*this.*/age);
        System.out.println("吃饭");
    }
}

(3)this可以修饰构造器:
总结:同一个类中的构造器可以相互用this调用,注意:this修饰构造器必须放在第一行

public class Person {
    
    
    //属性
    int age;
    String name;
    double height;
    //空构造器
    public Person(){
    
    
    }
    //有参构造器
    public Person(int age,String name,double height){
    
    
        this(age,name);
        this.height = height;
    }
    public Person(int age,String name){
    
    
        this(age);
        this.name = name;
    }
    public Person(int age){
    
    
        this.age = age;
    }
    //方法:
    /*public void eat(){
        int age = 10;
        System.out.println(age);//就近原则,age指的是离它近的age--》局部变量的age
        System.out.println(this.age);//这里指代的就是属性的age
        System.out.println("我喜欢吃饭");
    }*/
    public void play(){
    
    
        /*this.*/eat();
        System.out.println("上网");
        System.out.println("洗澡");
    }
    public void eat(){
    
    
        System.out.println(/*this.*/age);
        System.out.println("吃饭");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_31762741/article/details/109900194