logo

Java String Max Size

I det här avsnittet kommer vi att diskutera vad är den maximala storleken på strängen i Java.

I Java , a Sträng kan betraktas som en array av tecken, och sekvensen av tecken kallas en sträng. Klassen String representerar teckensträngar. Vi kan inte ändra strängen när den väl har skapats. Strängobjekt kan inte delas eftersom de är det oföränderlig . Tänk till exempel på följande sträng:

array sträng i c
 String str='javatpoint'; 

Ovanstående sträng motsvarar:

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

Klassen String tillhandahåller metoden length() som bestämmer längden på String. Metodens syntax är följande:

 public int length() 

Metoden returnerar längden på strängen. De längden på strängen är lika med antalet Unicode-enheter i snöret. Java-plattformen använder UTF-16-representationen i char-arrayer (varje tecken tar två byte), klasserna String och StringBuffer. I denna representation representeras tilläggstecken som ett par char-värden, det första från intervallet med höga surrogat, (uD800-uDBFF), det andra från intervallet med låga surrogat (uDC00-uDFFF).

Metoden returnerar längden som är av typen int. Så strängens maximala storlek är densamma som intervallet för heltalsdatatyp. Den maximala längden som skulle returneras av metoden skulle vara Integer.MAX_VALUE.

lista java till array

Storleken på int i Java är 4 byte (inklusive en signerad bit, d.v.s. MSB). Intervallet för heltalsdatatypen är -231till 231-1 (-2147483648 till 2147483647). Kom ihåg att vi inte kan använda negativa värden för indexering. Indexeringen görs inom det maximala intervallet. Det betyder att vi inte kan lagra 2147483648th karaktär. Därför är den maximala längden på String i Java 0 till 2147483647 . Så vi kan ha en sträng med längden 2 147 483 647 tecken, teoretiskt sett.

Låt oss hitta den maximala längden på strängen genom ett Java-program.

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;>

Produktion:

 Trying to initialize n with value Integer.MAX_VALUE + 1 n = -2147483648