刚才看帖子有人说了这么一句话 我感觉不对 大家看看
再说点题外话,Stirng str2 = new Stirng("Hello");其实应该有两个对象,一个是存在于栈中的"Hello",另外一个是对变量"str2"的指向,存在于堆内存中。用new关键字不管池中有没有都会开辟一块内存空间。我感觉应该是堆中存放hello 栈中存放他的引用哪个对?
再说点题外话,Stirng str2 = new Stirng("Hello");其实应该有两个对象,一个是存在于栈中的"Hello",另外一个是对变量"str2"的指向,存在于堆内存中。用new关键字不管池中有没有都会开辟一块内存空间。我感觉应该是堆中存放hello 栈中存放他的引用哪个对?
Stirng str2;
str2 = new Stirng("Hello");
那就相当于在方法中定义了局部变量,而局部变量是放在栈中的啊。
你可以类比:int i;
i=3;那这不就是相同的意思了吗?
new出来的东西都放在堆
只有局部变量和临时变量在栈中