"String".trim() == "String".trim();//true
"String".replace('g','G')== "String".replace('g','G');//false
"String".replace('t','t') == "String";//true
以上方法应该返回的都是一个新的String对象 ,而==应该比较的是字符串的对象,==号左右两边返回的都是新的字符串对象,怎么会相等呢?

解决方案 »

  1.   

    先看看trim()方法的实现再说话。
      

  2.   

    如果此 String 对象表示一个空字符序列,或者此 String 对象表示的字符序列的第一个和最后一个字符的代码都大于 '\u0020'(空格字符),则返回对此 String 对象的引用。
      

  3.   

    JAVA中,两个String是否相等的判断方法是调用String.equals() 不是直接使用 ==
      

  4.   

    用"=="不是不可以,如果是两个对象,两个对象完全相同时可以得到true
    最好不要这样用,用equals() 
    项目中如果很多这样的比较可以考虑重写这个方法
      

  5.   

    public String replace(char oldChar, char newChar) {
    if (oldChar != newChar) {
        int len = count;
        int i = -1;
        char[] val = value; /* avoid getfield opcode */
        int off = offset;   /* avoid getfield opcode */     while (++i < len) {
    if (val[off + i] == oldChar) {
        break;
    }
        }
        if (i < len) {
    char buf[] = new char[len];
    for (int j = 0 ; j < i ; j++) {
        buf[j] = val[off+j];
    }
    while (i < len) {
        char c = val[off + i];
        buf[i] = (c == oldChar) ? newChar : c;
        i++;
    }
    return new String(0, len, buf);
        }
    }
    return this;
        }
      

  6.   

    http://www.javaranch.com/journal/200409/Journal200409.jsp#a1
    读完这个你就会明白了