发表于: 2016-07-07 21:14:42
0 1960
今天学习了内存,
①内存分为四块,code segment,data segment,stack(栈),heap(堆),其中code segment用于存放代码,data segment用于存放静态变量和字符串常量,
stack用于存放局部变量,而heap则用于存放所有new出来的东西。
②实例分析
package test;
public class Test {
Test test = new Test();// new了一个对象test在堆内存里
int date = 9;//定义了一个整型变量
BirthDate d1 = new BirthDate(7,7,1970);//new一个对象d1,把实参的值传给这个对象。
BrithDate d2 = new BrithDate(11,1,2000);//new一个对象d2,
test.change1(date);//调用方法test.change1
test.change2(d1);//调用方法test.change2
test.change3(d2);//调用方法test.change3
public void change1(int i){//i是形参,形参和局部变量等同,使用前会先分配一个内存,date把值传给i,i=9
i=1234;//i=1234替换i=9,change1方法消失,为其分配的内存也消失,
}
public void change2(BirthDate b){//b和d1指向同一个内存,实参d1值传给形参b,b=(7,7,1970)
b = new BirthDay(22,2,2004);//把(22,2,2004)传给b,之后change2方法消失,为其分配的内存也消失
}
public void change3(BrithDate b){//b和d2指向同一块内存,实参d2值传给形参b,b=(11,1,2000)
b.setDay(22);//把22值传给day,b=(22,1,2000),之后方法setDay消失,为其分配的内存也消失。
}
}
明天计划:继续学习内存的分配
遇到的困难:实例分析内存的分配和释放过程很难,容易出错。
今天的收获:内存的分配过程分析。
评论