私は、次の式があります。これはなぜ例外をスローしませんか?
String y = new String("a") + "b".substring(1,1) + "c".concat("d").toUpperCase();
コードがコンパイルされ、成功した「ACD」を出力します。私の質問は、なぜですか?
JLSによれば、式を評価する前にオペランドを左から右に評価する必要があります。つまり、 "b" .substring(1,1)はIndexOutOfBoundsExceptionをスローする必要があります。代わりに、それはちょうど価値を捨てているようだ。
"aCD"の結果を引き起こすJavaは何ですか?
注 - これは決して実際には行いません。私は好奇心を満足させようとしています。
'' b ".substring(1,1)'は 'IndexOutOfBoundsException'をスローするべきだと思いますか? – Pshemo
"beginIndexが負の場合、またはendIndexがこのStringオブジェクトの長さより大きい場合、またはbeginIndexがendIndexより大きい場合。それは真実ではありません。 – Marvin
length == 1. beginIndex == 1、endIndex == 1。どのルールに違反していますか? –