黑马程序员技术交流社区
标题:
String对象比较问题
[打印本页]
作者:
火之意志
时间:
2013-5-22 23:16
标题:
String对象比较问题
String s1=new String();
String s2=new String("");
System.out.println(s1.equals(s2));
StringBuffer buffer=new StringBuffer();
StringBuffer buffer1=new StringBuffer("");
System.out.println(buffer1.equals(buffer));
前一个的结果是true为什么后一个结果是false.
作者:
刘治广
时间:
2013-5-22 23:20
前一个比较的是他俩的值,因为是默认的值都是null所有会相等,
作者:
陈潜
时间:
2013-5-22 23:40
你好 我查看了jdk文档,大胆猜测下~~·
String s1=new String();
String s2=new String("");
这两个都是new了一个空字符串,详见JDK中String构造方法:
构造方法:String() 初始化一个新创建的 String 对象,它表示一个空字符序列。
构造方法:String(String original) , 初始化一个新创建的 String 对象,表示一个与该参数相同的字符序列
就是说他们两个都是空字符串,equals是相同的
再看StringBuffer
StringBuffer buffer=new StringBuffer();
StringBuffer buffer1=new StringBuffer("");
构造方法:StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
构造方法:StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
两者构造出来之后一个初始化过 一个没有初始化过 所以不一样。。。
大概是这样。。不肯定。。。
作者:
刘学明
时间:
2013-5-23 00:14
楼上的解释应该是不正确的
String s1=new String();
String s2=new String("");
System.out.println(s1.equals(s2));//这里的true 是因为String中的equals比较的是两个字符串对象中的内容,因为String类把Object类中的equals方法覆盖了。
StringBuffer buffer=new StringBuffer();
StringBuffer buffer1=new StringBuffer("");
System.out.println(buffer1.equals(buffer));
//这里的false是因为equals在StringBuffer类中没有覆盖equals方法,也就是使用了Object中的equals方法,
Object中的equals方法比较的是内存地址。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2