当前位置: 代码迷 >> J2SE >> String和StringBuffer不能比较么?该怎么解决
  详细解决方案

String和StringBuffer不能比较么?该怎么解决

热度:6   发布时间:2016-04-24 01:00:04.0
String和StringBuffer不能比较么?
Java code
public class StringMethod {    public static void main(String [] args) {        String s1 = "hello world";        StringBuffer s2 = new StringBuffer("hello world");        System.out.println(s1.equals(s2));    }// [color=#FF0000]为什么返回 false???    [/color]}


------解决方案--------------------
String和StringBuffer比较只会是对象的内存地址。

你如果想要比较类容。你就要通过StringBuffer的toString()方法。得到String类型,然后再与String进行比较。
------解决方案--------------------
探讨
String和StringBuffer比较只会是对象的内存地址。

你如果想要比较类容。你就要通过StringBuffer的toString()方法。得到String类型,然后再与String进行比较。

------解决方案--------------------
Java code
public boolean equals(Object anObject) {    if (this == anObject) {//直接比较引用是否相同,相同返回true        return true;    }    if (anObject instanceof String) {//看传入类型是否是String,是的话比较String的内容,就是先看两个String类型的长度是否相同,不同跳出返回false,相同再比较组成String的char[]每个是否相同一样返回true        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;    }
  相关解决方案