“beijing”==“beijing”;
“beijing”.equalsIgnoreCase(new String(“beijing”))这两句话在内存中分别是怎么比对String型值的?
返回结果分别是神马?

解决方案 »

  1.   

    都是true 一个是地址比较,一个是内容比较
      

  2.   

    “beijing”==“beijing”;
    因为就一个 字符串,又不是new出来的,所以 默认指向同一个地址,所以 为true.equalsIgnoreCase
    和.equals 一样, 这个就是不区分大小写,比较的内容
      

  3.   


    String比较似乎没有比较地址一说,虽然String 是对象!
      

  4.   

    http://blog.csdn.net/column/details/javaresearch.html
    找到字符串相关的那篇文章,有详细介绍
      

  5.   

    对于字符串常量,如果内容相同,Java认为它们代表同一个String对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。 
      

  6.   


    String的【==】操作也是比较地址的,只是相同的字符常量指向同一个地址罢了。(见下面代码,返回false)
    而String.equal(),就不用多说了,这个大家都知道,比较字符串内容。        String a = new String("a");
            String b = new String("a");
            System.out.println(a == b);
      

  7.   


    String类型的变量a和b不都应该指向常量池中“a”吗?
    为什么返回false?
      

  8.   

    new 出来的string对象都是在堆上,不在常量池里。