this关键字

可以在成员变量名前面加上this.来区别成员变量和局部变量

class Person {

private int age;

private String name;

 public void speak() {

this.name = "小强";

this.age = 18;

System.out.println("name=" + this.name + ",age=" + this.age);

}

}

 class PersonDemo {

public static void main(String[] args) {

Person p = new Person();

p.speak();

}

}

如果不同名,那么方法内的变量名代表成员变量;如果同名,那么方法内的变量名就只表示局部变量了,和成员变量一毛钱关系都没有了。

所以,首先当我们创建了一个Person对象p,在创建对象的时候就已经完成了成员变量的初始化了。成员变量age的初始值是1000。

当我们p.setAge(20)的时候,其实这个20只在setAge这个方法内起作用,所以输出了方法内年龄20,执行完这句话后,20就被销毁了。

然后执行sayHello,它里面的age代表的是成员变量的值,所以依旧是1000。

成员变量:
①成员变量定义在类中,在整个类中都可以被访问。
②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
③成员变量有默认初始化值。

局部变量:

①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
③局部变量没有默认初始化值

在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找。

posted @ 2020-11-09 10:58  LvREN旅人  阅读(77)  评论(0)    收藏  举报