logo

Java文字列の最大サイズ

このセクションでは、次のことについて説明します。 Java の文字列の最大サイズはどれくらいですか?

ジャワ は文字の配列と考えることができ、文字のシーケンスは文字列と呼ばれます。 String クラスは文字列を表します。作成した文字列を変更することはできません。文字列オブジェクトは共有できないため、 不変 。たとえば、次の文字列について考えてみましょう。

typescript の foreach ループ
 String str='javatpoint'; 

上記の文字列は次と同等です。

 char ch[] = {'j', 'a', 'v', 'a', 't', 'p', 'o', 'i', 'n', 't'}; String str = new String(ch); 

String クラスは、String の長さを決定する length() メソッドを提供します。メソッドの構文は次のとおりです。

 public int length() 

このメソッドは文字列の長さを返します。の 文字列の長さ の数に等しい Unicode 単位 文字列の中で。 Java プラットフォームは、char 配列 (各文字は 2 バイト)、String、および StringBuffer クラスで UTF-16 表現を使用します。この表現では、補助文字は char 値のペアとして表され、最初の値は上位サロゲート範囲 (uD800-uDBFF) から、2 番目は下位サロゲート範囲 (uDC00-uDFFF) からのものです。

このメソッドは、int 型の長さを返します。したがって、文字列の最大サイズは整数データ型の範囲と同じになります。メソッドによって返される最大長は Integer.MAX_VALUE になります。

Java の int のサイズは 4 バイトです (符号付きビット、つまり MSB を含む)。整数データ型の範囲は -2 です312へ31-1 (-2147483648 ~ 2147483647)。インデックス作成には負の値を使用できないことに注意してください。インデックス付けは最大範囲内で行われます。つまり保管できないということです 2147483648番目 キャラクター。したがって、Java の文字列の最大長は次のとおりです。 0 ~ 2147483647 。したがって、理論的には、長さ 2,147,483,647 文字の String を取得できます。

Java プログラムを使用して文字列の最大長を調べてみましょう。

StringMaxSize.java

 import java.util.Arrays; public class StringMaxSize { public static void main(String args[]) { for (int i = 0; i <1000; i++) { try integer.max_value is a constant that stores the maximum possible value for any integer variable char[] array="new" char[integer.max_value - i]; assign specified data to each element arrays.fill(array, 'a'); creating constructor of string class and parses an into it str="new" string(array); determines print length system.out.println(str.length()); } catch (throwable e) returns detail message this throwable system.out.println(e.getmessage()); prints system.out.println('last: ' + (integer.max_value i)); i); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/05/java-string-max-size.webp" alt="Java String Max Size"> <h4>Note: We have not shown the complete output because the output is too long to show.</h4> <p>In the above example, we have used a for loop that executes 1000 times. Inside the try block, we have created an array of <strong>Integer.MAX_VALUE-i</strong> . After that, we have invoked the fill() method of the Arrays class. It assigns the specified data type value to each element of the specified range of the specified array.</p> <p>Inside the catch block, we caught the exception (if any) thrown by the fill() method and the <strong>getMessage()</strong> method prints the message related to the exception.</p> <p>Each character takes two bytes because Java stores string as UTF-16 codes.</p> <p>Whether you are appending strings directly or using a StringBuilder (much better), you will occasionally need twice as much memory: one to store the existing string and one to store the new string/buffer when it needs to be expanded.</p> <p>If we try to insert the value beyond the limit upon doing so, the memory gets overflow and the value that we get will be negative. For example, consider the following program:</p> <p> <strong>StringSizeBeyondLimit.java</strong> </p> <pre> public class StringSizeBeyondLimit { public static void main(String[] arg) { try { System.out.println( &apos;Trying to initialize&apos; + &apos; a n with value&apos; + &apos; Integer.MAX_VALUE + 1&apos;); // Try to store value Integer.MAX_VALUE + 1 int n = Integer.MAX_VALUE + 1; // Print the value of N System.out.println(&apos;n = &apos; + n); } catch(Exception e) { System.out.println(e); } } } </pre> <p> <strong>Output:</strong> </p> <pre> Trying to initialize n with value Integer.MAX_VALUE + 1 n = -2147483648 </pre> <hr></1000;>

出力:

Windowsコマンドarp
 Trying to initialize n with value Integer.MAX_VALUE + 1 n = -2147483648