请问:String s1 = new String("abc");和String s2 = "abc";有什么不同?
请问:String s1 = new String("abc");和String s2 = "abc";有什么不同?
主要是内存中的堆中、栈中的情况。
非常谢谢大家啊。
------解决方案--------------------好眼熟的问题,好像前两天刚见过一摸一样的…………
------解决方案--------------------没有什莫不同
都是String的对象类型
都是被放在堆内存中,而不是栈内存
------解决方案--------------------搞什么啊,为什么专注在这种问题上啊?
------解决方案--------------------String s1 = new String("abc");是在堆中生成;
String s2 = "abc";是直接在字符串池中查找得到;
两者不一样
------解决方案--------------------http://hi.baidu.com/whofly/blog/item/93792adf123a251548540300.html
------解决方案--------------------堆与栈的区别
栈,用来存取基本类型数据和一些对象的引用。
堆,用来存取new出来的对象或数组。
两个表达式都从栈中申请了部分空间,但第一个要从堆中申请空间,而第二个有可能申请也有可能不申请。这里涉及到了对象缓存池的概念,如果"abc"已经在池子中了,那么s2就直接应用到它了,而无需从堆中申请空间了。
------解决方案--------------------