this关键字

public class this关键字 {
    public static void main(String[] args) {

        /*当存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量
         那是因为Java采取的是就近原则访问,要解决这个问题就需要使用this关键字*/

        //内存
        /*栈内存也叫方法栈,把它称为方法栈的原因是因为:
        一个方法要运行的时候,JVM会在栈内存中开辟一片属于这个方法的空间,让这个方法在这片空间内执行

        首先在这片代码中主方法会先执行,主方法一执行,JVM会在栈内存中开辟一片空间属于main方法,
        在这片空间中先声明了一个变量animal,接着new一个Animal,这时候在堆内存中就创建了一个Animal对象,
        这个Animal有name和color两个属性,都分配了默认的初始值,name=“猫”,color=白;
        这时候假设它的内存地址是0X98,此时a这个变量就指向了0X98,也就是a指向了这个对象;

        接着在main方法的这片空间执行a.eat();eat方法执行的时候,
        JVM在栈内存中为这个方法开辟了一片属于eat方法的空间,在这个eat方法里首先声明了一个变量name=“老鼠”,
        紧接着输出语句,因为Java采取的是就近原则来访问的,因为输出语句中的name变量在eat方法这片空间也存在,
        如果存在它就只会在eat方法这片空间去找,如果这片空间没有它才会去到堆内存中去找

        this关键字代表的是对象的引用,也就是this在指向一个对象,所指向的对象就是调用该函数的对象引用;
         */

        //注意
        /**/
        Animal animal = new Animal("猫", "白");
        animal.eat();
    }
}

class Animal {

    /**
     * 成员变量
     */
    String name;
    String color;

    public Animal(String n, String c) {
        name = n;
        color = c;
    }

    public void eat() {
        /**局部变量*/
        String name = "老鼠";
        System.out.println(this.name + "在吃……");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值