修饰类的的控制符
修饰符 |
同一package |
不同package |
friendly(默认的) |
可以 |
不可以 |
public |
可以 |
可以 |
修饰类成员的控制符
修饰符 |
同一类中 |
同一package不同类 |
不同package不同类 |
private |
可以 |
不可以 |
不可以 |
friendly(默认) |
可以 |
可以 |
不可以 |
protected |
可以 |
可以 |
是子孙类可以,不是不可以 |
public |
可以 |
可以 |
可以 |
生命周期
栈 |
堆 |
静态区 |
代码区 |
空间小速度,快存放临时变量 |
空间大,存放多有new出来的对象 |
存放static修饰的变量或方法 |
储存字节码 |
class Person{
private static int id = 0;
private String name = " ";
public Person(String name){
this.name = name;
}
public static void main(String[] args){
id = 200;
Person p = new Person("瞎打");
}
}
- 将代码加载到代码区
- 开始执行main方法,在静态区创建id=0;在栈区创建p指向堆区的对象,在静态区创建"瞎打"
- 开始执行public Person(),首先在栈中创建临时变量name,其指向静态区的"瞎打",然后在堆中创建p指向的真正内容
- 回到main方法,main方法结束,JVM结束并释放所有内存