厳密に言えば、文字列には長さの制限があります。
1. String は内部で char[] 配列を使用して文字列の内容を保存します。配列の添え字は整数です (String 構築メソッド String(char value[], int offset, int count) を参照することもできます)文字数は整数で表されます)、整数の範囲 (Java では 32 ビットを指定します) は 2G です。つまり、Java 配列の最大長は 2G です。つまり、文字列は 2G を超えることはできません。 2Gのキャラ。
2. Java の配列サイズに関して他に制限はありますか?実際、配列のサイズは Java ヒープのサイズを超えることはできず、Java ヒープの最大サイズは起動パラメータで指定できます。Java ヒープが十分に大きい場合、配列の最大長は増加し続けることができます。 。
したがって、理論によれば、文字列内の文字数は 2G を超えることはできませんが、2G 未満の文字を持つことは可能です。
String は内部的に char 配列の形式で格納されており、配列の長さは int 型であるため、String で許容される最大長は Integer.MAX_VALUE です。また、Java の文字は 16 ビットで格納されるため、文字列の最大長を格納するには約 4GB のメモリが必要です。ただし、これは文字列変数の場合のみで、「abc」や「1a2b」などのコード内に記述された文字列リテラル(文字列リテラル)の場合、許容される最大長は文字列によって異なります。定数プール、つまりクラス形式ファイル内の文字列の格納形式:
CONSTANT_Utf8_info {
u1 タグ;
u2 長さ;
u1 バイト[長さ];
}
u2 は符号なし 16 ビット整数であるため、許容される文字列リテラルの理論上の最大長は 2^16-1=65535 です。ただし、実際にテストした結果、許容される最大長は 65534 のみであり、この制限を超えるとコンパイル エラーが発生することがわかりました。
以上がJavaのString型の長さに制限はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。