本文主要是介绍java null.trim_JAVA中String及Stringutil的trim方法个人剖析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
昨天注册的账号,今天上班时间上午无事挡下来StringUtils类的源码学习,在看到方法trim时,有种求知的冲动便有了下面的内容,鉴于本人菜鸟,请各位大神勿喷。
打开StringUtils类的源码定位到方法trim,相信绝大多数程序猿都使用过这个方法,因为它太过平常,所以大家可能没有留意其内部实现,一下是方法代码:
public static String trim(String str) {
return str == null ? null : str.trim();
}
简单到不能再简单的一个定义,一句return,其实却是有奥秘在其中的,上面的代码我们很容易看懂,它使用了string类的trim方法,至于string的trim此处不贴源码有兴趣的可以自己挡下来看看
下来我将模拟string类实现trim(大神勿喷哦^_^)
首先我们肯定会想到trim本身就是做了去空格操作,有那么复杂吗?但是请各位仔细阅读String类的源码,你会发现它不仅仅是去空格这么简单而是使用value<=' ',为什么要这么做呢,下来我们分析下
在ascall码里面空格为十六进制20(\u0020),而trim方法使用的是<=这个值,那么很明显它不仅仅只是去除空格,ascall码表如下:
现在,我想很多人都明白了,接下来附上我模拟的Sring类trim方法:
public static String trim(String str) {
int start = 0, last = str.length()-1;
int end = last;
char[] value=str.toCharArray();
while ((start <= end) && (value[start] <= ' '))
start++;
while ((end >= start) && (value[end] <=' '))
end--;
if (start == 0 && end == last)
return str;
return new String(value,start, end - start+1);
}
这篇关于java null.trim_JAVA中String及Stringutil的trim方法个人剖析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!