java正确的string常量(trim函数只能去除空格吗)(1)

我们在平时的项目开发中,为了去除字符串前后多余的空格,经常会使用java.lang.String#trim函数对字符串进行处理,可是你知道吗?trim函数不仅仅会去除空格,还会去除其他的字符,那trim函数究竟具备什么样的能力呢?带着疑问,我们一起在源码中找下答案。

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; }

以上是java.lang.String#trim函数的实现源代码,我们可以看到,代码通过判断字符ASCII码值是否小于空格字符的ASCII码值来决定是否要去除该字符。依次对最前面连续的字符和最后面连续的字符进行判断,直到遇到需要保留的字符时才停止,则最终的st和len值即为返回结果的字符串索引起始位和长度。即假设存在字符串" small apple ",则经过trim函数处理后,返回"small apple",不管是前面的单个空格,还是末尾的连续空格都会被去除。

java正确的string常量(trim函数只能去除空格吗)(2)

但是我们为什么说trim函数不仅仅会去除空格呢,原因就在于ASCII码值小于字符空格的字符不仅仅只有空格这个一个字符,以下是ASCII码表,我们可以看到ASCII码值小于32(空格的ASCII码值)的字符还有31个。如下图所示

java正确的string常量(trim函数只能去除空格吗)(3)

如果这些字符单个或连续出现在字符串的起始位置和末尾位置,那么java.lang.String#trim函数都是可以去除这些字符的。所以trim函数是真的不仅仅只会去除字符串开始和末尾的空格的。喜欢作者文章的可以关注作者,不定期更新哦。

java正确的string常量(trim函数只能去除空格吗)(4)

,