this
- 通常写this的时候,都是指“这个对象”或者“当前对象”,this本身表示对当前对象的引用。this关键字只能在方法内部使用,表示“调用方法的那个对象”的引用。
- static方法就是没有this的方法。
原因:
- 从static关键字含义的角度,static方法不与包含它的类的任何对象关联在一起(static关键字被设计的意义之一),this表示“当前对象”,static是无法关联到“当前对象”的。
- 从内存分析的角度,static修饰的方法(即静态方法),存储的位置是方法区,而对象实例都随机不连续(“不连续”是指不同对象实例在堆中的存储位置)地存储在Java堆中,因为方法区内没有存储对象实例的相关引用(地址),所以不能解读“this”指代的含义。
.this
- 应用场景:内部类
- 作用:生成对外部类对象的引用,产生的引用自动地具有正确的类型(在编译期被知晓并受到检查)。
public class OuterClass {
...
public class InnerClass {
public OuterClass outer() {
return OuterClass.this;
}
}
}