-3
String str = "Nobody ever went broke by buying IBM";

System.out.println("Length of this string: "+ str.length());
System.out.println("The character at position 36: "+ str.charAt(36)); // i get error here
System.out.println("The substring from 36: "+ str.substring(36));// why no error here

次のような出力が得られます。

Length of this string: 36
The character at position 36: error
The substring from 36: 

私の質問は、substring(36) が呼び出されたときにエラーが表示されない理由です。代わりに、空のスペースとして回答を得ています。論理的には、インデックス 36 に char はありませんか?? しかし、36インデックスがないため、charAt(36)を呼び出すとエラーが発生します??

4

1 に答える 1

2

これが、これらの機能がどのように機能するかです。(Java を想定) .

オラクルのドキュメントから:

substringIndexOutOfBoundsExceptionメソッドは、 beginIndex が負の値であるか、この String オブジェクトの長さより大きい場合に -をスローし ます。

36 は文字列の長さよりも大きくない文字列の長さであるため、呼び出しはsubstring成功します。

charAt36 文字がインデックス 0 から 35 に配置されているため、失敗します。charAt のドキュメントを参照してください。

于 2013-06-10T14:59:34.413 に答える