Java中关于堆和栈的描述:

描述的不一定正确,欢迎指正!!

Java基本数据类型都是以值的形式储存在栈中,而引用数据类型则是以引用的形式存在栈中,在栈中在指向堆中引用对象。

关于栈和堆的实例一(基本数据类型):

int a =1;

int b = a;

int b = b+1;

Java 在栈中的储存的关系顺序:

第一步:在栈中开辟一个空间,是int 类型的,取名为a,并且赋值给1;

第二步:在栈中开辟一个空间,是int 类型的,取名为b,并且把 a 的值赋值给 b ;【也就是说 a 的值赋值给了 b ,此时 b 的值也是 a ,a = 1】

第三步:在栈中进行运算,b+1 的值赋值给 b ,根据上一步 b 的值为 1 ;第一步 得到 a 的值为 1 ;所以 b+1 的的值就是 2 ,重新赋值给 b 就是 b改变了原来(由 1 → 2 )。

关于栈和堆的实例二(引用类型):

Student student = new Student();

student.name = "刘广法";

Student studentTwo =student;

Java 在栈中的储存的关系顺序:

第一步:在栈中开辟一个空间,命名为student ,并且 student 指向堆中的对象 new Student();

第二步:给student 中的变量 命名为:“刘广法”;

第三步:在栈中开辟一个空间,命名为studentTwo ,并且把 student 对象赋值给 studentTwo 。

也就是说此时的 studentTwo 中变量的名字也是“刘广法”。

如果此时,进行变量修改,

studentTwo.name = "刘广法博客";

那么结果就是student 的名字也是修改成了“刘广法博客”

举报/反馈
相关文章