String pp="qq";
String ee="qq";
为什么pp==ee是ture?它们在内存当中如何分配?

解决方案 »

  1.   

    pp-->qq;
    ee-->qq;
    pp/ee-->qq;
    pp==ee.
      

  2.   

    使用直接赋值的方式,如果java虚拟机发现内存中应经有了字符串,以后再次将该相同的字符赋值时,将会把该字符串的地址空间给它,而不会开辟新的内存空间。
      

  3.   

    pp和ee均指向同一块内存(值为qq),如果你换成:
    String pp=new String("qq"); 
    String ee="qq"; 
    你就会发下pp==ee为false了,因为此时pp和ee指向不同的内存
      

  4.   

      String pp="qq"; 
    String ee="qq"; 
    String pp="qq"; 这个创建的时候首先会到池里找,  要池里没有的话就会创建一个,  String ee="qq";  前面一个已经创建了,   所以直接用池里的, 他不是new 的 要是new 的就在堆里面了
      

  5.   

    上楼正解,关于String的问题真是不少,可以总结一下了
      

  6.   

    pp ee这两个变量是指向同一个“qq”,因为是String 类型的 ,所以在字符串相同时,内存中只有一个拷贝,但是如果是Stringbuffer就不同了
    我建议去看看 帮助文档,一目了然!
      

  7.   

    equals用来比较对象的值
    ==用来比较基本数据类型