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

解决方案 »

  1.   

    又是关于String.....
    String pp = "qq",先是在String池中去找,结果没找到,然后在堆栈中new 出一个"qq"放进String池中,接着把pp的引用指向String池中的"qq".
    String ee = "qq",同样先在String池中去找"qq",因为前面创建过了,所以直接把ee的引用指向String池中的"qq".
    既然他们指向的是同一个对象,不难理解他们是相等的了吧..
    以上为个人理解,有错误希望指正..
      

  2.   

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

  3.   

    简单来说 ==是比较内存地址
       equals 比较的是内容
     除非是重写equals方法
    String pp="qq"; 
    String ee="qq"; 
    pp 和ee都是指向 qq的同一个引用
       所以 ==是相等的
      

  4.   

    “==” 应该是调用的String类的equals(Object str)函数,查看java源代码可以看到,是逐个字符比较的。
      

  5.   


    String pp=new String("qq");
    String ee=new String("qq");
    这两个用==是false,我理解, 
    String pp=“qq”;
    String ee=new String(“qq”);
    这两个==为什么也false? 
    为什么仅仅是一楼那种形式==是true??
      

  6.   

    String pp ="qq" 就是先在字符串常量池中去创建一个,创建之前先在池中查找是否已经存在此变量,若存在,则直接赋值,否则创建
    String pp = new String("qq");堆内存中有个变量值存储着指向字符串常量池的“qq”的内存内存地址