引用 5 楼 chenzhp 的回复: http://blog.sina.com.cn/s/blog_5d7cccb90100bv5u.html 在这里看懂了,谢谢! 不过面文章里下的又不懂了: Strings tr1=new String(“abc”); Strings tr2=“abc”; tr1和tr2指向的不是同一个对象吗?它们的内存又是怎么分配的呢? tr1在栈里面有一分内存,然后tr1的值"abc"分配在堆内存里rt1所引用的对象中,tr1指向"abc". tr2在栈里面有一分内存,然后tr2的值就直接存在于栈内存中吗?还是tr2在堆中创建了另一个对象来存储"abc"?所以tr1 == tr2 为false? 可是tr2没有new啊? 里面的看不太懂!
引用 10 楼 zyw_computer_love 的回复: 把变量比作糖果,内存比作罐子,糖放在罐子里,同样变量就放在罐子里,但是变量是一个地址,而不是什么实实在在的值(比如数字什么),根据地址然后再去找这个值,这个地址存储着这个值 你所说的是一个变量的引用,那如果成员变量在定义的时候就给它赋了值,比如int i = 1;在实例化这个类的对象之前,int i = 1被分配到哪个内存里面?
http://blog.sina.com.cn/s/blog_5d7cccb90100bv5u.html
把变量比作糖果,内存比作罐子,糖放在罐子里,同样变量就放在罐子里,但是变量是一个地址,而不是什么实实在在的值(比如数字什么),根据地址然后再去找这个值,这个地址存储着这个值
看上下文。 比如 void f(){ int i;//这个i在函数被调用时在栈中分配空间 } class A{ int i; } new A();创建对象的时候分配在堆里。打个比方,张三在堆里坐着,那张三的脑袋当然也在堆里了。
62,567
社区成员
307,521
社区内容
加载中