请教一个关于This关键字的问题!
class Employee {
private String name;
private int age;
public Employee (String name, int age) {
this.name = name;
this.age = age;
}
}
在这段代码中,this.name = name;private String name;
private int age;
public Employee (String name, int age) {
this.name = name;
this.age = age;
}
}
this.age = age;
哪个是局部变量,哪个是实例变量啊? 有点迷糊!
----------------解决方案--------------------------------------------------------
首先看构造函数:
public Employee (String name, int age) {
this.name = name;
this.age = age;
}
在这个构造函数中:
函数参数中的 name 是类 String 的一个实列变量,同时又是一个局部变量,
同样函数参数中的 age 也是一个局部变量,
再看看:
private String name;
private int age;
这两个其中的 name是类String的实例变量,也是一个局部变量,他只在这个类定义的实列中起作用,age也是,
----------------解决方案--------------------------------------------------------
this.name(局部变量)=name(传进来的);
----------------解决方案--------------------------------------------------------
this.name是创建对象的成员变量,name是形参
----------------解决方案--------------------------------------------------------
成员变量和局部变量的区别
A:作用范围
成员变量:成员变量定义在类中,在整个类中都可以被访问.
局部变量:作用于变量所在区域.也就是方法体内.
B:初始化值
成员变量:堆内存的数据都有默认初始化值.
局部变量:必须按照如下步骤:定义,赋值,使用.
C:存储位置
成员变量:存储在堆内存中,随着对象的存在而存在.
当对象变成垃圾被回收时,该对象中的成员变量就会消失.
局部变量:存储在栈内存中,当方法被调用,或者语句被执行时才存在.
当方法运行完,或者语句执行完毕,局部变量被自动释放.
this关键字
(1)代表本类对象的引用
谁调用,this代表谁.
(2)什么时候使用
A:局部变量隐藏成员变量(你就是这种情况)
B:构造方法中
C:用于减少实参中的对象个数.
this本身谁调用就代表谁.所以,在方法内部,有一个this对象.
----------------解决方案--------------------------------------------------------
回看历史………………
----------------解决方案--------------------------------------------------------
this 是指向自身的引用 引用(this)+ “. ” 后面的那是成员变量……
this.name(成员变量) = name(形参);
this.age(成员变量) = age(形参);
----------------解决方案--------------------------------------------------------