In deze sectie zullen we bespreken wat is de maximale grootte van de string in Java.
In Java , A Snaar kan worden beschouwd als een reeks tekens, en de reeks tekens wordt een string genoemd. De klasse String vertegenwoordigt tekenreeksen. We kunnen de tekenreeks niet meer wijzigen nadat deze is gemaakt. String-objecten kunnen niet worden gedeeld omdat ze dat wel zijn onveranderlijk . Beschouw bijvoorbeeld de volgende tekenreeks:
dereferentiewijzer
String str='javatpoint';
De bovenstaande string is gelijk aan:
char ch[] = {'j', 'a', 'v', 'a', 't', 'p', 'o', 'i', 'n', 't'}; String str = new String(ch);
De klasse String biedt de methode length() die de lengte van de String bepaalt. De syntaxis van de methode is als volgt:
public int length()
De methode retourneert de lengte van de string. De lengte van de snaar is gelijk aan het aantal Unicode-eenheden in het touwtje. Het Java-platform gebruikt de UTF-16-representatie in char-arrays (elk teken neemt twee bytes in beslag), String- en StringBuffer-klassen. In deze weergave worden aanvullende tekens weergegeven als een paar char-waarden, de eerste uit het bereik met hoge surrogaten (uD800-uDBFF), de tweede uit het bereik met lage surrogaten (uDC00-uDFFF).
De methode retourneert de lengte die van het type int is. De maximale grootte van de String is dus hetzelfde als het bereik van het gehele gegevenstype. De maximale lengte die door de methode zou worden geretourneerd, zou Integer.MAX_VALUE zijn.
afhandeling van Java-uitzonderingen
De grootte van int in Java is 4 bytes (inclusief een ondertekende bit, d.w.z. MSB). Het bereik van het gehele gegevenstype is -231naar 231-1 (-2147483648 tot 2147483647). Houd er rekening mee dat we geen negatieve waarden kunnen gebruiken voor indexering. De indexering vindt plaats binnen het maximale bereik. Dit betekent dat we de gegevens niet kunnen opslaan 2147483648e karakter. Daarom is de maximale lengte van String in Java 0 tot 2147483647 . We kunnen dus theoretisch een String hebben met een lengte van 2.147.483.647 tekens.
Laten we de maximale lengte van de string vinden via een Java-programma.
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;>
Uitgang:
Trying to initialize n with value Integer.MAX_VALUE + 1 n = -2147483648
1000;>