logo

Java streng maks. størrelse

I dette afsnit vil vi diskutere hvad er den maksimale størrelse på strengen i Java.

I Java , a Snor kan betragtes som en række af tegn, og sekvensen af ​​tegn kaldes en streng. Klassen String repræsenterer tegnstrenge. Vi kan ikke ændre strengen, når den først er oprettet. Strengobjekter kan ikke deles, fordi de er uforanderlig . Overvej f.eks. følgende streng:

pandas standardafvigelse
 String str='javatpoint'; 

Ovenstående streng svarer til:

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

String-klassen leverer metoden length(), der bestemmer længden af ​​strengen. Metodens syntaks er som følger:

 public int length() 

Metoden returnerer længden af ​​strengen. Det længden af ​​strengen er lig med antallet af Unicode enheder i snoren. Java-platformen bruger UTF-16-repræsentationen i char-arrays (hvert tegn tager to bytes), String- og StringBuffer-klasser. I denne repræsentation er supplerende tegn repræsenteret som et par af char-værdier, den første fra high-surrogates-området (uD800-uDBFF), den anden fra low-surrogates-området (uDC00-uDFFF).

Metoden returnerer længden som er af typen int. Så strengens maksimale størrelse er den samme som rækken af ​​heltalsdatatype. Den maksimale længde, der ville blive returneret af metoden, ville være Integer.MAX_VALUE.

Størrelsen af ​​int i Java er 4 bytes (inkluderet en signeret bit, dvs. MSB). Området for heltalsdatatypen er -231til 231-1 (-2147483648 til 2147483647). Husk, at vi ikke kan bruge negative værdier til indeksering. Indekseringen udføres inden for det maksimale interval. Det betyder, at vi ikke kan opbevare 2147483648th Karakter. Derfor er den maksimale længde af streng i Java 0 til 2147483647 . Så vi kan have en streng med en længde på 2.147.483.647 tegn teoretisk.

Lad os finde den maksimale længde af strengen gennem et 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:

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