加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java的拆分是否会覆盖数组的长度,即使它是预先初始化的?

发布时间:2020-12-15 05:03:44 所属栏目:Java 来源:网络整理
导读:String [] arr = {" "," "," "}; // String arr = new String[4];String splitThis = "Hello,World,There";arr = splitThis.split(","); arr[3] = "YAY"; 第四行抛出一个Array Index Out of bounds Exception.即使阵列的长度为4. 在这种情况下如何进步? 解
String [] arr = {" "," "," "};  // String arr = new String[4];
String splitThis = "Hello,World,There";
arr = splitThis.split(","); 
arr[3] = "YAY";

第四行抛出一个Array Index Out of bounds Exception.即使阵列的长度为4.
在这种情况下如何进步?

解决方法

不,数组不是长度4.数组长度为3,因为它是拆分操作的结果.

您的代码实际上只是:

String splitThis = "Hello,There";
String[] arr = splitThis.split(","); 
arr[3] = "YAY";

完成对变量的赋值后,其先前的值根本不重要. split方法返回对数组的引用,并且您将该引用分配给arr.拆分方法不知道变量的先前值 – 它完全独立于您之后对值进行操作 – 因此它不仅仅填充现有数组的一部分.

如果你想要那种行为,你可以使用这样的东西:

String[] array = { " "," " }; // Or fill however you want
String splitThis = "Hello,There";
String[] splitResults = splitThis.split(",");
System.arraycopy(splitResults,array,Math.min(array.length,splitResults.length));

或许你想要一个List< String>所以你以后可以添加项目:

String splitThis = "Hello,There";
List<String> list = new ArrayList<>(Arrays.asList(splitThis.split(","));
list.add(...);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读