栈与堆
- 类和实例变量生存于堆上面
- 方法和局部变量生存于栈上
- 栈顶存放的是当前正在执行的方法,执行完弹出
构造函数
- 自己没有写构造函数时,编译器会自动地帮你写一个构造函数
- 如果你自己已经写了一个构造函数,则编译器不会再帮你写构造函数
- 构造函数不能被继承
- 对于父类和子类,当创建一个子类时,会逐级往上调用父类地构造函数
class grandpa
{
public grandpa()
{
System.out.println("grandpa");
}
}
class father extends grandpa
{
public father()
{
System.out.println("father");
}
}
class son extends father{
public son()
{
System.out.println("son");
}
}
public class test{
public static void main(String [] args)
{
son s=new son();
}
}
- 可以显示地在子类的构造方法里面用super()来调用父类的构造方法
- 如果不用super(),编译器也会为你自动地调用父类的构造方法
- 使用super()时必须是子类的方法里面的第一条语句,“孩子不能在父母之前出生”
生存期
- 方法中的局部变量当方法执行结束时该局部变量也就消失
- 实例变量的生存期取决于它所存在的对象
- 对象的生命周期取决于它的引用,若该对象的唯一或者最后一个引用没了,则该对象也将被垃圾回收器回收
关于引用变量的消失有以下3种情况
1.A的唯一引用变量又去指向了B
2.A的唯一引用变量被置为null
3.对于某个方法中的引用,当该方法执行完毕以后该引用变量也就消失了