substringでハマった

"ABCDE".substring(0,2);

のreturnは

AB

です。

ABC

ではありません。このことを勘違いしていたため、ちょっとハマりました。

ドキュメンをしっかり読みましょう。
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle

substring

public String substring(int beginIndex,
                        int endIndex)

    この文字列の部分文字列である新しい文字列を返します。
部分文字列は、指定された beginIndex から始まり、インデックス endIndex - 1 にある文字までです。
したがって、部分文字列の長さは endIndex-beginIndex になります。