马克社区吧 关注:484贴子:446
  • 1回复贴,共1

java中new String和字符串池比区别是浪费空间,为什么还需要它?

只看楼主收藏回复

对于下面程序中:ss0 = new String( "hello" );是用new()来新建对象的,存于堆中。每调用一次就会创建一个新的对象。当然从节省空间的角度来讲,肯定不如str="hello",有童鞋一定问,那要它有什么用?当时设计编译器时,为什么要设计它?马克-to-win,那我请问你,如果在你编程序时,你还不知道字符串内容怎么办?这时就用到new String,所以,什么都有什么的用处。

本章源码
public class Test
{
public static void main(String args[]) {
String str, str1, ss0, ss1, ss2, ss3, ss4;
str = "hello";
str1 = "hello";
ss0 = new String("hello");
ss1 = new String("hello");
ss2 = new String("bye");
ss3 = new String("chi le ma");
ss4 = new String("chi le ma");
/* ==在测内存地址是否相同,如果相同,就证明是同一个对象。== means address space is the same.str and str1 point to the same
String constant.only one place
*/
。。。。。。。。。。。。。。。。。。。。。
详情请见:http://www.mark-to-win.com/JavaBeginner/JavaBeginner2_web.html#UseOfNewString


回复
本楼含有高级字体1楼2014-06-20 16:06
    sz="hello";在栈中创建一个String对象引用变量sz,然后看看栈中有没有"hello",如果没有,则将"hello"存放进栈,并令sz指向”hello”,如果已经有”hello” 则直接令sz指向“hello”。

    请问:常量池不是单独开辟一个内存空间吗?


    回复
    2楼2014-11-25 18:19

      扫二维码下载贴吧客户端

      下载贴吧APP
      看高清直播、视频!