String s1 = "123"; String s2 = "123";这两个在内存中有几份"123"?
String s = "123"; 和String s = new String("123")有什么区别 ?
我就是想知道它们在内存中的是怎么存储的 请稍微详细点 谢谢那

解决方案 »

  1.   

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

  2.   

    恩,正在自己JAVA呢,有学到了点知识点
      

  3.   


    new 的时候  会给对内存分配一块内存,   s指向对内存那块内存,  这个我只懂
    但是  没new的时候 ,分配的就是 内存中的栈 ???  这个 不清楚, 不知道  可否给点证据资料什么的???
      

  4.   

    String s1 = "123";
    String s2 = "123";
    System.out.println(s1 == s2);
    这个就是证据啊啊。如果不知道内存咋个分配的,那就去找大学C语言老师或者把你那床底下那C语言教程拿出来看看,肯定会有的
      

  5.   

    String s1 = "123";
    String s2 = "123";
    System.out.println(s1 == s2);
    ‘123”存储在字符创常量池中 就只有一份  , s1 s2在栈中 , s1 s2和都指向常量池中的"123”这块区域String s1 = new String("123");
    String s2 = new String("123");
    new 一下在堆中就创建一个对象  所以在堆中有两个对象  栈中的 s1 s2分别指向这两个对象找了点资料   我是这样理解的 不知道对不对
      

  6.   

    对于String s = new String("123");
    "123"在堆内存中就会产生一份。。这份是没有用的,会被回收。
    new 的时候会在产生一份,这个s就是指向这个内存。
      

  7.   

    这种东西在 CSDN 的 Java 版怎么没完没了的?每天都有人问!!!