str.split("")在JDK1.7和JDK1.8中的区别
程序员文章站
2022-03-03 08:42:17
...
问题描述:
今天帮同门作华为的笔试题,我在自己电脑上调试好的代码上传后会报数组越界的异常,这让我非常的难受,经过认真查找问题的原因发现,我本地用的是JDK1.7,而上传后用的是JDK1.8编译运行,String.split("")在JDK1.7和JDK1.8中切割后是有差别的,具体如下代码所示。
在JDK1.8中,如下所示:
public class String_split {
public static void main(String[] args) {
String str = "abc";
String[] str_split = str.split("");
System.out.println(str_split.length);
System.out.println("==========================");
for (int i = 0; i < str_split.length; i++) {
System.out.println(str_split[i]);
}
}
}
运行结果:
3
==========================
a
b
c
在JDK1.7中,同样的代码,但是结果不同,如下所示:
public class String_split {
public static void main(String[] args) {
String str = "abc";
String[] str_split = str.split("");
System.out.println(str_split.length);
System.out.println("==========================");
for (int i = 0; i < str_split.length; i++) {
System.out.println(str_split[i]);
}
}
}
运行结果:
4
==========================
a
b
c
总结:
字符串经过split("")切割后,在JDK1.7中,切割后的字符串数组的长度会比原始字符串中包含的字符元素的个数多一,并且切割后的字符串数组的第一个元素是null;
字符串经过split("")切割后,在JDK1.8中,切割后的字符串数组的长度和原始字符串中包含的字符元素的个数一样多,并且切割后的字符串数组的第一个元素是原始字符串的第一个字符元素。
推荐阅读
-
django(1045,"Accessdeniedforuser'wccLab'@'localhost'(usingpassword:no)BUG问题的解决教程
-
c#程序中使用"like“查询access数据库查询为空的问题
-
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释_PHP教程
-
PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么?,PHP
-
django(1045,"Accessdeniedforuser'wccLab'@'localhost'(usingpassword:no)BUG问题的解决教程
-
关于android与php传递数据,引号显示"的问题
-
命名空间"Microsoft.SqlServer"中不存在类型
-
命名空间"Microsoft.SqlServer"中不存在类型
-
PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么?,PHP_PHP教程
-
绿色版MySql安装及启动时:&quot;MYSQL 服务无法启动&quot;的3534问题,修改密码