1.寄存器
最快的存储区,由编译器根据需求进行分配,我们在程序中无法控制。
2.栈
存放基本类型的变量数据和对象的引用。但对象本身不存放在栈中,而是存放在堆中或者
常量池中。
栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享
3.堆
存放所有new出来的对象。
4.常量池
存放字符串常量和基本类型常量。
- class BirthDate {
- private int day;
- private int month;
- private int year;
- public BirthDate(int d, int m, int y) {
- day = d;
- month = m;
- year = y;
- }
- 省略get,set方法…… }
- public class Test{
- public static void main(String args[]){
- int date = 9;
- Test test = new Test();
- test.change(date);
- BirthDate d1= new BirthDate(7,7,1970);
- }
- public void change1(int i){ i = 1234;
- }
- int date = 9;
- Test test = new Test();
- test.change(date);
- BirthDate d1= new BirthDate(7,7,1970);