だから、すぐに。
コードを実行した結果は次のとおりです。
package test; import java.util.Arrays; public class Main { public static void main(String[] args) { System.out.println("result: " + Arrays.toString("0000".split(""))); } }
Java 8の場合:
result: [0, 0, 0, 0]
およびJava 7:
result: [, 0, 0, 0, 0]
ご覧のとおり、文字列はさまざまな方法で分割されますが、この問題のためにArrayIndexOutOfBoundsExceptionをキャッチしました。
それは不快でしたが、私は生き残ることができ、すべての意志を拳に集め、問題が何であるかを理解することにしました。
公式ドキュメントには次のように書かれています。
この文字列の先頭に正の幅の一致がある場合、結果の配列の先頭に空の先行部分文字列が含まれます。 ただし、先頭の幅がゼロの一致では、このような空の先行部分文字列は生成されません。
つまり 文字列が空の文字で分割される状況では、空のゼロ要素は生成されません。
この動作は以前の動作よりも論理的ですが、互換性の障害は私にとって驚きでした。 いずれにせよ、何もできないので、注意してできるだけ少ない問題をキャッチしてください:)。
PS後で、stackoverflow.com でこの問題に関する議論を見つけました。
PPS Borzユーザーが正しく指摘したように、それはバグでした。 どうやら、より良い変更ログを読む必要があるようです。