ホームページ  >  記事  >  コンピューターのチュートリアル  >  JavaのString型の長さに制限はありますか?

JavaのString型の長さに制限はありますか?

WBOY
WBOY転載
2024-01-06 08:07:491813ブラウズ

Java の String 型の長さ制限はありますか?

厳密に言えば、文字列には長さの制限があります。

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 サイトの他の関連記事を参照してください。

声明:
この記事はdocexcel.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。