黑马程序员技术交流社区
标题:
关于String类
[打印本页]
作者:
hanrongle
时间:
2013-7-30 09:37
标题:
关于String类
本帖最后由 杜光 于 2013-7-30 10:14 编辑
class StringDemo{
public static void main(String[] args){
String s1="abc";
String s2=new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}
复制代码
为什么s1==s2是false,是s1.equals(s2)是true?
作者:
denghui1010
时间:
2013-7-30 09:48
因为s1和s2指向两个不同的对象,equals相等是因为s1和s2的字符串相等
作者:
手心里的温柔
时间:
2013-7-30 09:50
s1,s2不是同一个对象 而字符串内容是一样的 所以equals()的值为true
希望能帮到你 共同学习哈
作者:
zhouchao
时间:
2013-7-30 10:00
s1 == s2 比较的是两个对象的内存地址值 s1 和 s2是指向两个对象 内存地址值是不同的
s1.equals(s2) 比较的是对象的内容是否相同,两个对象的内容都是abc所以s1.equals(s2)为true
这时个人的理解 你可以做个参考
作者:
下雨天
时间:
2013-7-30 10:04
== 与 equals:
当==用来比较基本类型时,比较的是内容,例如:1==1 true
当==用来比较引用类型时,比较的是地址值 例如: new Student() == new Student() false 这是因为两个new产生了两个实例 也就相应的产生两个地址
当equals用来比较String类型时,比较的是内容本身,就像你的代码中的一样 结果是true
当equals用来比较String类型以外的引用类型时,比较的是地址值,与用==比较引用是一样的道理
作者:
hoyouly
时间:
2013-7-30 10:08
s1在内存中有一个对象。
s2在内存中有两个对象。new 是一个对象,”abc”也是一个对象,字符串是一个特殊的对象
equals 方法 比较的是地址值,
作者:
jialihong
时间:
2013-7-30 10:12
因为==是比较两个变量的地址,
equals比较的是两个变量的值
作者:
王希军
时间:
2013-7-30 10:42
s1和s2是两个不同的字符串对象,在内存当中会分配不同的内存地址,不同的地址中可以存放相同的值(两个对象都存放的是“abc”)。“==”比较的是内存地址,所以输出为false,而equal()方法比较的是两个对象中存放的值,所以输出结果为true。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2