发表于: 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消失,为其分配的内存也消失。

}

}

明天计划:继续学习内存的分配

遇到的困难:实例分析内存的分配和释放过程很难,容易出错。

今天的收获:内存的分配过程分析。



返回列表 返回列表
评论

    分享到