黑马程序员技术交流社区
标题:
字符串常量
[打印本页]
作者:
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