> 文档中心 > java之this和static以及为什么this不存在static里面

java之this和static以及为什么this不存在static里面

1.this的解释
"this"关键字本来指的是当前对象的引用。
(1)this在构造方法中,例如 public Student(String name)
{this.name=name;}。
如果创建了对象开辟了空间比如Stuent stu=new Student();,那么此时this指的是new Student(“张三”)对象,因为创建对象的时候就会调用构造方法,而构造方法被谁调用,谁就是当前对象的引用,也就是this。
(2) this对于成员方法 。谁调用了该方法谁就是this就是谁.
具体如下图:
在这里插入图片描述

2.static解释
static是静态的意思.
(1) 被staitc修饰过的属性,无论对象被创建几次当修改属性时都是共享staitc的,如 static String name;//被static修饰过的
s1.name=“张三”;
s2.name=“李四”;
System.out.println(s1.name);
System.out.println(s2.name);
//此时二者的输出都是李四,这就是共享.
(2)注意:jvm虚拟机里内存分为堆、栈,方法区等(jdk7以及后续版本可能会不一样) 。方法区分为静态方法区和非静态方法区,具体效果如下面的图形所示:
在这里插入图片描述

3.this不存在static里面
解释:
因为this具有代表的是本类对象的引用的作用,它是属于对象的。static修饰的变量或者方法是属于类的,static是随着类的加载而加载的。
如下图所示:
在main函数里面调用了static方法method()。因为method()方法是静态的所以类被加载的时候method()方法就会被加载(而如果加载了method()方法,那么就会连同this也被加载了,但是对象是一定是在类加载之后的也就是说this也会在类加载后才有效),如果此时就要调用this显然违反了规则.
在这里插入图片描述