每一个对象的普通方法和构造方法,都有隐藏的参数,this
普通方法,this指向调用该方法的对象
构造方法,this指向正要创建的对象
static方法,不能使用this(没有对象指向,运行时不会传入this,不能使用非静态的变量和方法)
栈,局部变量(对象)的名字和指向堆的一个地址
堆,存放对象的信息,如属性的名字和值,方法的名字和地址
方法区(堆的一部分,通常永久代实现),
存放:类的代码信息,static变量,常量池
类信息中:1.代码 => 一堆属性,方法的实现
2.static变量和方法
3.常量池(字符串常量池)
对象调用普通方法时,传入参数this,为栈的地址,指向堆中该对象。
作用:多对象共享类的方法区中代码信息,调用对象的属性时,要分辨出是哪个对象。
对象调用构造方法时,传入参数与对象属性重名,this可区分属性和为属性赋值的参数。
注意:通过this调用其他构造方法,构造器的调用必须是第一行语句。//Constructor call must be first statement in constructor body