split()方法上遇到的坑,JDK1.7和JDK1.8版本上的区别 發布於 1 年前 (2018年10月18日)

前段时间在公司程序上看到前辈们用split()方法去切割无分隔符号标志的字符串。

如:

String testStr = "asd";

String[] testStrSplit = testStr.split("");

如果你的版本不是jdk1.7时

输出testStrSplit 是["a","s","d"]

刚开始我还以为是前辈程序有问题。

然后切换到了和linux服务器java同版本(jdk1.7)

输出testStrSplit 是["","a","s","d"]

emmmmm,这就是问题所在了,当版本不一时,jdk1.7前面是多了一个空,因此数组长度一个是4,而一个为3.(此处有眼泪)

所以,当想切割无分隔符的字符串时,我们是不是可以有其他方法?

是哒,这个时候可以用toCharArray().兼容jdk1.7和1.8。

char[] testStrArr = testStr.toCharArray();//["a","s","d"]


toCharArray 方法de作用:将字符串转换为字符数组.

split()和toCharArray的区别:

(1)split是根据你需要按照那个分隔符号来进行分割的

比如:

String a = "a,d,e,s,f"; String []b = a.split(',');这个就是根据逗号将数据分开,遍历输出得到的b的对象为"a","d","e","s","f"

(2)toCharArray是将String对象的每一个下标位的对象保存在char[]中,

比如:

String a = "abcd"; char[] b = a.toCharArray(); 遍历输出得到的b信息就是['a','b','c','d']