java中String与StringBuffer的==与equals
2013-01-06 14:17
239 查看
StringBuffer代码:
运行结果:
不等
不等
StringBuffer的equals是 使用了父类Obejct的equals源码:
可见判断的是内存地址是否相同。所以也不等
StringBuffer的==判断的是对象是否相等 显然sb与sb1不是同一个对象
===========================
String:
结果:
相等
不等
首先String源码中equals重写了父类Obejct的equals 源码:
做的是值判断 循环判断每一个字符是否相等
所以第一个s1.equals(s3) 结果是true
下面的==还是判断了2个不同的对象 结果为false
*以上测试均通过
结论来自实践和书籍
如果有歧义请指出
本文出自 “FlyHome” 博客,请务必保留此出处http://superfly81.blog.51cto.com/6302302/1109556
StringBuffer sb = new StringBuffer("aaa"); StringBuffer sb1 = new StringBuffer("aaa"); if(sb.equals(sb1)){ Print.out("相等"); }else{ Print.out("不等"); } if(sb == sb1){ Print.out("相等"); }else{ Print.out("不等"); }
运行结果:
不等
不等
StringBuffer的equals是 使用了父类Obejct的equals源码:
public boolean equals(Object obj) { return (this == obj); }
可见判断的是内存地址是否相同。所以也不等
StringBuffer的==判断的是对象是否相等 显然sb与sb1不是同一个对象
===========================
String:
String s1 = new String("aa"); String s2 = new String("bb"); String s3 = new String("aa"); if(s1.equals(s3)){ Print.out("相等"); }else{ Print.out("不等"); } if(s1 == s3){ Print.out("相等"); }else{ Print.out("不等"); }
结果:
相等
不等
首先String源码中equals重写了父类Obejct的equals 源码:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; while (n-- != 0) { if (v1[i++] != v2[j++]) return false; } return true; } } return false; }
做的是值判断 循环判断每一个字符是否相等
所以第一个s1.equals(s3) 结果是true
下面的==还是判断了2个不同的对象 结果为false
*以上测试均通过
结论来自实践和书籍
如果有歧义请指出
本文出自 “FlyHome” 博客,请务必保留此出处http://superfly81.blog.51cto.com/6302302/1109556
相关文章推荐
- Java:String与StringBuffer中equals
- 转:浅谈Java中数据在内存中的状态,以及String、StringBuffer、==、equals、数组等问题
- 浅谈Java中数据在内存中的状态,以及String、StringBuffer、==、equals、数组等问题
- 浅谈Java中数据在内存中的状态,以及String、StringBuffer、==、equals、数组等问题
- java核心API之String,StringBuffer和StringBuilder以及equals与==的区别和联系
- 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer
- 浅谈Java中数据在内存中的状态,以及String、StringBuffer、==、equals、数组等问题
- JAVA中String与StringBuffer 、StringBuilder的区别
- java中String,StringBuffer与StringBuilder的区别??
- Java中String,StringBuilder和StringBuffer的区别
- Java:String、StringBuffer和StringBuilder的区别
- Java 中的字符串类String、StringBuffer、StringBuilder的区别
- Java里的String和StringBuffer
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
- 探秘Java中的String、StringBuilder以及StringBuffer
- Java中String、StringBuffer、StringBuilder的区别介绍
- Java基础知识强化43:StringBuffer类之StringBuffer和String的相互转化
- java String的“==”和equals的区别 (第一篇博客)
- Java中String、StringBuilder以及StringBuffer的具体区别
- Java之字符串String、StringBuffer、StringBuilder