一、基本分析
1、Java语言除基本类型之外的变量都是引用。所以类对象是一种引用,Java当中没有指针、取地址的概念。
String s;
s = new String("hello"); //对象是new出来的,在堆中保存
s.equals("A");
//对应的伪反汇编,可仿照C++来理解
mov ecx,s //C++中,把this放到ecx追踪
push "A";
call equals; //通过ecx拿到对象s的地址
2、基本类型及其默认初始值
3、局部变量分析
int date = 9;
BirthDate d1 = new BirthDate(7,7,1970);
change2(d1); //为了简略,没有new该类的对象
public void change2(BirthDate b)
{
b = new BirthDate(22,2,2004);
}
当编译器扫描到change2(d1)时,则会在该栈中,分配一个指针,指向d1;
然后调用change2(b)后,b指向新的BirthDate对象;
最后,调用完毕,回收new出来的垃圾,以及跳过栈中的该指针。
参考:1、面向对象内存解析03