解决方案 »

  1.   

    String str1 = "abc"; 开辟了快内存,指向"abc"
    String str2 = new String("abc");用了new就是又新开辟了内存指向另外一个"abc",
    这个时候如果str1.equals(str2)是true,因为它们指向的内容值是相等的,
    但是如果是str1 == str2 就是false,因为它们指向不同。大概就是这么个意思,希望能帮到楼主。
      

  2.   


    String str1 = "abc";                          //"abc"在常量池,引用str1存储的是"abc"在常量池的地址
    String str2 = new String("abc");      //new String("abc") 在堆上分配内存,引用str2存储的是new String("abc") 在堆上的内存地址
    //还有一点区别是str1的类加载时就完成了初始化,而str2 要在执行引擎执行到那一行代码时才完成初始化。
      

  3.   

    str1是创建了一个对象,str2创建了两个但是回收了一个
      

  4.   

    1.第一个定义java虚拟机会在常量池中建立一个‘abc’   str1指向‘abc’
    2.第二个用new建立的常量,所以会在堆中建立一个'abc',str2指向堆中的’abc‘
      

  5.   


    常量池和堆是一起的?能详细讲下在内存中的栈和堆上是咋样分配的?

    常量池是JVM的一块特殊的内存空间。和堆没什么关系
    我给你好好解释下吧:
    1.String s1 = "ubuntu";  
       String s2 = “ubuntu”;2.String s3 = new String("ubuntu");  
       String s4 = new String("ubuntu");  
    很容易理解了吧  求给分
      

  6.   


    常量池和堆是一起的?能详细讲下在内存中的栈和堆上是咋样分配的?
    常量池是方法区的一部分,Java虚拟机运行时数据区内存主要有:堆,方法区、Java虚拟机栈、本地方法栈。
    更详细的可以看
    http://www.cnblogs.com/Cratical/archive/2012/08/21/2649985.html
      

  7.   


    常量池和堆是一起的?能详细讲下在内存中的栈和堆上是咋样分配的?

    常量池是JVM的一块特殊的内存空间。和堆没什么关系
    我给你好好解释下吧:
    1.String s1 = "ubuntu";  
       String s2 = “ubuntu”;2.String s3 = new String("ubuntu");  
       String s4 = new String("ubuntu");  
    很容易理解了吧  求给分
    比如说String str="abc"; 保存的时候,就在常量池中存在abc了,而String str=new String("abc") 是在程序加载的时候,才在堆中分配空间,是这样的?
      

  8.   


    常量池和堆是一起的?能详细讲下在内存中的栈和堆上是咋样分配的?

    常量池是JVM的一块特殊的内存空间。和堆没什么关系
    我给你好好解释下吧:
    1.String s1 = "ubuntu";  
       String s2 = “ubuntu”;2.String s3 = new String("ubuntu");  
       String s4 = new String("ubuntu");  
    很容易理解了吧  求给分
    比如说String str="abc"; 保存的时候,就在常量池中存在abc了,而String str=new String("abc") 是在程序加载的时候,才在堆中分配空间,是这样的?这个还真没研究过 sorry