String trim()方法

Sum*_*eet -4 java string trim

在Java中,我在下面编写了string trim()方法的代码.

           if(" String ".trim() == "String")
               System.out.println("Equal");
           else
               System.out.println("Not Equal");
Run Code Online (Sandbox Code Playgroud)

它给出了Not Equal我理解的输出,因为" String ".trim()它返回了新的String对象引用.

但是当我修剪和比较没有空格时,它会提供输出Equals.

            if("String".trim() == "String")
               System.out.println("Equal");
           else
              System.out.println("Not Equal");
Run Code Online (Sandbox Code Playgroud)

如果String没有空格,那么trim() 返回什么方法?我知道equals()我可以使用但是在我的考试中我得到了这个问题.

Roh*_*ain 5

你看过API了吗?这在trim()方法文档中有明确说明:

返回:删除前导和尾随空格的此字符串的副本,如果没有前导或尾随空格,则返回此字符串.

您也可以浏览源代码.如果两端都没有删除空格,则该trim()方法返回this:

public String trim() {
    int len = value.length;
    int st = 0;
    char[] val = value;    /* avoid getfield opcode */

    while ((st < len) && (val[st] <= ' ')) {
        st++;
    }
    while ((st < len) && (val[len - 1] <= ' ')) {
        len--;
    }
    return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
}
Run Code Online (Sandbox Code Playgroud)

所以,如果这两个st > 0len < value.length是假的,这将是情况下没有在任一端空格的字符串,它返回this.

现在,为什么"String" == "String"true字符串实习的优点.您可以通过谷歌获得更多有关此信息.