内存储器使用
内存使用
局部变量占用栈内存,对象(类)是NEW出来的,位于堆内存,类成员变量也位于堆内存
栈内存中局部引用变量(指针变量)将指向堆内存的对象,普通局部变量只在栈内存
方法执行结束后,该方法栈内存的局部变量将全部消失,而堆内存的对象将被垃圾收集器收拾掉(test.java)(static变量和常量存放在数据区,属于整个类,可以用于计数,可以用类名直接访问静态变量和方法)
定义成员变量可以初始化,否则编译器将赋予默认值;局部变量没有默认值
局部变量占用栈内存,对象(类)是NEW出来的,位于堆内存,类成员变量也位于堆内存
栈内存中局部引用变量(指针变量)将指向堆内存的对象,普通局部变量只在栈内存
方法执行结束后,该方法栈内存的局部变量将全部消失,而堆内存的对象将被垃圾收集器收拾掉(test.java)(static变量和常量存放在数据区,属于整个类,可以用于计数,可以用类名直接访问静态变量和方法)
Test test = new Test(); int date = 9; //date在栈内存 BirthDate d1= new BirthDate(7,7,1970); //d1在栈内存 BirthDate d2= new BirthDate(1,1,2000); //指向了堆内存的对象 test.change1(date); //将基础变量date的值传给i, test.change2(d1);//形参(局部变量)b与引用变量d1指向同一堆内存 test.change3(d2); public void change1(int i){ i = 1234; //date不变 } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); //d1不变 } public void change3(BirthDate b) { b.setDay(22); //d2的成员变量day改变了 }
定义成员变量可以初始化,否则编译器将赋予默认值;局部变量没有默认值