logo

Dimensiunea maximă a șirului Java

În această secțiune, vom discuta care este dimensiunea maximă a șirului în Java.

În Java , A Şir poate fi considerată ca o matrice de caractere, iar secvența de caractere numită șir. Clasa String reprezintă șiruri de caractere. Nu putem schimba șirul odată ce este creat. Obiectele șir nu pot fi partajate deoarece sunt imuabil . De exemplu, luați în considerare următorul șir:

hopa concepte
 String str='javatpoint'; 

Șirul de mai sus este echivalent cu:

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

Clasa String oferă metoda length() care determină lungimea String-ului. Sintaxa metodei este următoarea:

 public int length() 

Metoda returnează lungimea șirului. The lungimea sforii este egal cu numărul de unități Unicode în sfoară. Platforma Java folosește reprezentarea UTF-16 în matrice char (fiecare caracter are doi octeți), clase String și StringBuffer. În această reprezentare, caracterele suplimentare sunt reprezentate ca o pereche de valori char, primul din intervalul de surogate înalte, (uD800-uDBFF), al doilea din intervalul de surogate scăzute (uDC00-uDFFF).

Metoda returnează lungimea care este de tip int. Deci, dimensiunea maximă a șirului este aceeași cu intervalul de tip de date întreg. Lungimea maximă care ar fi returnată de metodă ar fi Integer.MAX_VALUE.

Mărimea lui int în Java este de 4 octeți (inclusiv un bit semnat, adică MSB). Intervalul tipului de date întreg este -231la 231-1 (-2147483648 până la 2147483647). Rețineți că nu putem folosi valori negative pentru indexare. Indexarea se face în intervalul maxim. Înseamnă că nu putem stoca 2147483648th caracter. Prin urmare, lungimea maximă a String în Java este 0 până la 2147483647 . Deci, putem avea un șir cu lungimea de 2.147.483.647 de caractere, teoretic.

ce este oul de Paște al lui Android

Să găsim lungimea maximă a șirului printr-un program 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;>

Ieșire:

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