this关键字是一个引用变量,存在堆内存中(对象的内部),存储本对象的地址
一个对象一个this(引用,指向自己)
用在实例方法中,指向当前正在执行此动作的对象;
多数情况可省略,
例:String name:
this.name等价于name:省略this仍表示当前对象的name(this.大部分情况下可省略)
不可省略的情况: 区别局部/实例变量时,如赋值this.id = id;
static无this:
例:String name:
不论有没有this,static方法里都无法访问name!因为name不管有没有this,都是指当前对象的name,是对象级的
静态方法需要引用才可调用实例方法引用.方法名()
而实例方法里可以直接调用实例方法; (另一种理解方式:static是类级的,this是对象级的,保持同一级才可以访问方法/变量)this的使用:
- 在方法内部获得对当前对象的引用. 例如
return this;
- 将当前对象传递给其他方法
- 在构造器中调用构造器:
通过一个构造函数调用另一个构造函数以少写些雷同代码, 如,希望无参Data构造函数可以有默认值:
//写法1 ❌:
new Data (1970, 1, 1); //不可行的方法,会创建我们不需要的新对象
//写法2 ✔️:
public Data(){
this(1970, 1, 1); //可行的方法,不创建新对象
}
注意, 只有构造器中能使用this调用构造器, 其他任何方法中不可调用构造器