黑马程序员技术交流社区

标题: 字符串常量 [打印本页]

作者: xibozglr    时间: 2013-11-29 14:55
标题: 字符串常量
本帖最后由 xibozglr 于 2013-11-29 15:49 编辑

                String str="abc";
               
                String str1=new String("abc");
               
                System.out.println(str==str1);//false
                System.out.println(str1.equals(str1));//true


什么原因啊???


作者: Jim-剣◆﹏    时间: 2013-11-29 15:22
这个问题太经典了
String str="abc";
                 
String str1=new String("abc");
                 
System.out.println(str==str1);//false
System.out.println(str1.equals(str1));//true
str==str1:比较的是内存地址值,str是匿名字符串对象,持有的引用来自字符串常量池,str1持有的引用来自堆内存,因为是通过new关键字在堆内存中单独开辟空间 的,所以,两者的内存地址值不一致,返回false

str1.equals(str1):这个是通过String的equals比较字符串,由于String覆写了equals方法,实现的机制是比较内容,所以,只要内容一致,就返回true





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2