一、成员变量与局部变量区别
1、在类中位置不同
成员变量:类中方法外
局部变量:在方法定义中或方法声明上
2、在内存中位置不同
成员变量:堆内存
局部变量:栈内存
3、生命周期不同
成员变量:随着对象的创建而存在,随着对象的销毁而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
4、初始值不同
成员变量:有默认初始值
局部变量:没有初始值,必须初始化才能使用
注意:成员变量与局部变量变量名可以相同,采用就近原则
二、匿名对象
1、应用场景:调用方法,仅只能调用一次
2、好处:匿名对象调用完就是垃圾,可以被垃圾回收器回收
3、匿名对象可以做实际参数传递
三、this 代表所在类的一个对象
1、注意:哪个在调用该方法,this就代表那个对象
2、this的应用场景:解决局部变量隐藏成员变量;
public class ThisDemo {
public static void main(String[] args) {
Mouse mouse = new Mouse();
mouse.name="小米渣";
mouse.jiao();
mouse = new Mouse();
mouse.name="风车车";
mouse.jiao();
}
}
class Cat {
private String name;
public Cat(String name) {
// this代表当前创建构造方法的对象
this.name = name;
}
public void get(Mouse m) {
// this代表当前调用get方法的对象
System.out.println(this.name + ":你敢叫,我抓你!!!" + "\n" + m.name + ":你来抓啊!!!");
}
}
class Mouse {
String name ;
public void jiao() {
// this代表当前调用jiao方法的对象;
System.out.println(this.name + ":叫两声,咋地!!!");
Cat cat = new Cat("大洋芋");
// this代表当前调用jiao方法的对象;
cat.get(this);
System.out.println("--------------------");
cat = new Cat("假老练");
// this代表当前调用jiao方法的对象;
cat.get(this);
System.out.println("--------------------");
}
}