java string.trim()得到了意外的结果

java string.trim()得到了意外的结果,java,string,Java,String,代码如下: String str=" "; System.out.println("("+str+")"); str=str.trim(); System.out.println(str==null); System.out.println(str==""); System.out.println(str.length()); System.out.println("("+str+")"); 输出为: ( ) false false 0 () 多个空格.trim()的返回字符是什

代码如下:

String str="    ";
System.out.println("("+str+")");
str=str.trim();
System.out.println(str==null);
System.out.println(str=="");
System.out.println(str.length());
System.out.println("("+str+")");
输出为:

(    )
false
false
0
()

多个空格.trim()的返回字符是什么?显然,它不能是空的

不,它不是空字符串<代码>“”

这就是为什么

System.out.println(str==null); 
返回
false

但是万一

System.out.println(str=="");
使用

它将返回
true

如果你想知道为什么

System.out.println(str=="");
返回
false

阅读 或

或者在谷歌上搜索字符串比较,这是一个非常流行的话题

No它不是
null
它的空字符串<代码>“”

public String trim()
这就是为什么

System.out.println(str==null); 
返回
false

但是万一

System.out.println(str=="");
使用

它将返回
true

如果你想知道为什么

System.out.println(str=="");
返回
false

阅读 或
或者在谷歌上搜索字符串比较,这是一个非常流行的话题

public String trim()
返回字符串的副本,并省略前导和尾随空格

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

否则,如果字符串中没有代码大于
'\u0020'
的字符,则将创建并返回表示空字符串的新字符串对象

否则,k是代码大于
'\u0020'
的字符串中第一个字符的索引,m是代码大于
'\u0020'
的字符串中最后一个字符的索引。创建了一个新的字符串对象,表示该字符串的子字符串,该字符串以索引k处的字符开始,以索引m处的字符结束,即
此字符串的结果。子字符串(k,m+1)

此方法可用于从字符串的开头和结尾修剪空白(如上所述)

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

返回字符串的副本,并省略前导和尾随空格

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

否则,如果字符串中没有代码大于
'\u0020'
的字符,则将创建并返回表示空字符串的新字符串对象

否则,k是代码大于
'\u0020'
的字符串中第一个字符的索引,m是代码大于
'\u0020'
的字符串中最后一个字符的索引。创建了一个新的字符串对象,表示该字符串的子字符串,该字符串以索引k处的字符开始,以索引m处的字符结束,即
此字符串的结果。子字符串(k,m+1)

此方法可用于从字符串的开头和结尾修剪空白(如上所述)

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


如果您查找有关
的一些信息,trim()
所做的是删除相关字符串开头和结尾处的任何空格或字符,因此,在您使用
的情况下,trim()可能是相同的

"Multiple spaces".trim()

return Multiple Spaces

如果您查找有关
.trim()
的一些信息,它会删除相关字符串开头和结尾的任何空格或字符,因此,在您使用
的情况下,trim()
可能是相同的

"Multiple spaces".trim()

return Multiple Spaces

这是一个空字符串-但您正在将字符串与
==
进行比较,这让您感到困惑。请参阅不比较引用,比较值,
str==null
->false,因为字符串已初始化,
str==“
->”false,因为
是池中不存在的新对象引用。问题在于使用
=
-请参阅使用
系统.out.println(str.equals(“”)
而不是
System.out.println(str==”)它是一个空字符串-但您正在将字符串与
==
进行比较,这让您感到困惑。请参阅不比较引用,比较值,
str==null
->false,因为字符串已初始化,
str==“
->”false,因为
是池中不存在的新对象引用。问题在于使用
=
-请参阅使用
系统.out.println(str.equals(“”)
而不是
System.out.println(str==”)