在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()我可以使用但是在我的考试中我得到了这个问题.
你看过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 > 0和len < value.length是假的,这将是情况下没有在任一端空格的字符串,它返回this.
现在,为什么"String" == "String"是true字符串实习的优点.您可以通过谷歌获得更多有关此信息.