In diesem Abschnitt werden wir diskutieren Was ist die maximale Größe der Zeichenfolge in Java?
In Java , A Zeichenfolge kann als Array von Zeichen betrachtet werden, und die Zeichenfolge wird als Zeichenfolge bezeichnet. Die String-Klasse repräsentiert Zeichenfolgen. Wir können die Zeichenfolge nicht mehr ändern, sobald sie erstellt wurde. String-Objekte können nicht gemeinsam genutzt werden, da dies der Fall ist unveränderlich . Betrachten Sie beispielsweise die folgende Zeichenfolge:
Rekursion in Java
String str='javatpoint';
Die obige Zeichenfolge entspricht:
char ch[] = {'j', 'a', 'v', 'a', 't', 'p', 'o', 'i', 'n', 't'}; String str = new String(ch);
Die String-Klasse stellt die Methode length() bereit, die die Länge des Strings bestimmt. Die Syntax der Methode lautet wie folgt:
public int length()
Die Methode gibt die Länge der Zeichenfolge zurück. Der Länge der Zeichenfolge ist gleich der Anzahl von Unicode-Einheiten in der Zeichenfolge. Die Java-Plattform verwendet die UTF-16-Darstellung in char-Arrays (jedes Zeichen benötigt zwei Bytes), String- und StringBuffer-Klassen. In dieser Darstellung werden Zusatzzeichen als Paar von Zeichenwerten dargestellt, wobei der erste aus dem Bereich mit hohen Ersatzzeichen (uD800-uDBFF) und der zweite aus dem Bereich mit niedrigen Ersatzzeichen (uDC00-uDFFF) stammt.
Die Methode gibt die Länge zurück, die vom Typ int ist. Die maximale String-Größe entspricht also dem Bereich des Integer-Datentyps. Die maximale Länge, die von der Methode zurückgegeben würde, wäre Integer.MAX_VALUE.
Die Größe von int in Java beträgt 4 Bytes (einschließlich eines vorzeichenbehafteten Bits, d. h. MSB). Der Bereich des ganzzahligen Datentyps beträgt -231zu 231-1 (-2147483648 bis 2147483647). Denken Sie daran, dass wir für die Indizierung keine negativen Werte verwenden können. Die Indizierung erfolgt innerhalb des maximalen Bereichs. Das bedeutet, dass wir das nicht speichern können 2147483648Th Charakter. Daher beträgt die maximale Länge eines Strings in Java 0 bis 2147483647 . Wir können also theoretisch einen String mit einer Länge von 2.147.483.647 Zeichen haben.
Lassen Sie uns die maximale Länge der Zeichenfolge mithilfe eines Java-Programms ermitteln.
Zeiger in c
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( 'Trying to initialize' + ' a n with value' + ' Integer.MAX_VALUE + 1'); // Try to store value Integer.MAX_VALUE + 1 int n = Integer.MAX_VALUE + 1; // Print the value of N System.out.println('n = ' + 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;>
Ausgabe:
Trying to initialize n with value Integer.MAX_VALUE + 1 n = -2147483648
1000;>