Does Java’s split overwrite the length of the array, even if it is pre initialized?
•
Java
String [] arr = {" "," "," "}; // String arr = new String[4];
String [] arr = {" "," "," "}; // String arr = new String[4]; String splitThis = "Hello,World,There"; arr = splitThis.split(","); arr[3] = "YAY";
The fourth line throws an array index out of bounds exception Even if the length of the array is 4 How to make progress in this situation?
Solution
No, the array is not length 4 The array length is 3 because it is the result of the split operation
Your code is really just:
String splitThis = "Hello,There"; String[] arr = splitThis.split(","); arr[3] = "YAY";
After the assignment of a variable is completed, its previous value is not important at all The split method returns a reference to an array, and you assign the reference to arr. the split method does not know the previous value of the variable - it operates on the value completely independently of you later - so it does not just fill part of the existing array
If you want that behavior, you can use something like this:
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));
Maybe you want a list < string > so you can add items later:
String splitThis = "Hello,There"; List<String> list = new ArrayList<>(Arrays.asList(splitThis.split(",")); list.add(...);
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码