日期:2014-05-20  浏览次数:20727 次

菜鸟求解 还请给为大牛多多指教哈
String s1 = "123"; String s2 = "123";这两个在内存中有几份"123"?
String s = "123"; 和String s = new String("123")有什么区别 ?
我就是想知道它们在内存中的是怎么存储的 请稍微详细点 谢谢那

------解决方案--------------------
String s1 = "123"; String s2 = "123",在你声明s1的时候就在栈内存分配了了一块内存,在你声明s2的时候,就会跑到内存池你找有没有123,找到了,他们就同时指向123这个内存
而String s = new String("123"),new的时候就在堆内存分配一块内存,s指向堆内存那块内存,没有new关键字,分配的内存就在栈里
------解决方案--------------------
探讨

String s1 = "123"; String s2 = "123",在你声明s1的时候就在栈内存分配了了一块内存,在你声明s2的时候,就会跑到内存池你找有没有123,找到了,他们就同时指向123这个内存
而String s = new String("123"),new的时候就在堆内存分配一块内存,s指向堆内存那块内存,没有new关键字,分配的内存就在栈里

------解决方案--------------------
是就一个
------解决方案--------------------
恩,正在自己JAVA呢,有学到了点知识点
------解决方案--------------------
两个吧 。
字符串池中有一个 。堆内存中有一个
------解决方案--------------------
探讨

String s1 = "123"; String s2 = "123",在你声明s1的时候就在栈内存分配了了一块内存,在你声明s2的时候,就会跑到内存池你找有没有123,找到了,他们就同时指向123这个内存
而String s = new String("123"),new的时候就在堆内存分配一块内存,s指向堆内存那块内存,没有new关键字,分配的内存就在栈里

------解决方案--------------------
探讨

String s1 = "123"; String s2 = "123",在你声明s1的时候就在栈内存分配了了一块内存,在你声明s2的时候,就会跑到内存池你找有没有123,找到了,他们就同时指向123这个内存
而String s = new String("123"),new的时候就在堆内存分配一块内存,s指向堆内存那块内存,没有new关键字,分配的内存就在栈里

------解决方案--------------------
对于String s = new String("123");
"123"在堆内存中就会产生一份。。这份是没有用的,会被回收。
new 的时候会在产生一份,这个s就是指向这个内存。
------解决方案--------------------
虽然N年前考证件时有学这方面内容,现在对这些东西也很模糊了,因为在实际工作中根本用不上,除了面试时...作为爱好,支持一下,其实对于大牛们你们看到相同的问题觉得奇怪吗?知道答案的话,直接引用同类的贴就是了,对提问者可是受益匪浅...只是小小建议,莫怪...