Šajā sadaļā mēs apspriedīsim kāds ir maksimālais Javas virknes izmērs.
In Java , a Stīga var uzskatīt par rakstzīmju masīvu, un rakstzīmju secību sauc par virkni. String klase apzīmē rakstzīmju virknes. Mēs nevaram mainīt virkni, kad tā ir izveidota. Virknes objektus nevar koplietot, jo tie ir nemainīgs . Piemēram, apsveriet šādu virkni:
python inicializācijas saraksts
String str='javatpoint';
Iepriekš minētā virkne ir līdzvērtīga:
char ch[] = {'j', 'a', 'v', 'a', 't', 'p', 'o', 'i', 'n', 't'}; String str = new String(ch);
String klase nodrošina garuma () metodi, kas nosaka virknes garumu. Metodes sintakse ir šāda:
public int length()
Metode atgriež virknes garumu. The auklas garums ir vienāds ar skaitu Unikoda vienības virknē. Java platforma izmanto UTF-16 attēlojumu char masīvos (katra rakstzīme aizņem divus baitus), String un StringBuffer klasēs. Šajā attēlojumā papildu rakstzīmes ir attēlotas kā char vērtību pāris, pirmā no augstāko aizstājēju diapazona (uD800-uDBFF), otrā no zemo aizstājēju diapazona (uDC00-uDFFF).
Metode atgriež garumu, kura tips ir int. Tātad virknes maksimālais lielums ir tāds pats kā vesela skaitļa datu tipa diapazons. Maksimālais garums, ko atgriež metode, būtu Vesels skaitlis.MAX_VALUE.
Int lielums Java ir 4 baiti (iekļauts parakstīts bits, t.i., MSB). Vesela skaitļa datu tipa diapazons ir -231uz 231-1 (-2147483648 līdz 2147483647). Atcerieties, ka indeksēšanai nevar izmantot negatīvas vērtības. Indeksēšana tiek veikta maksimālajā diapazonā. Tas nozīmē, ka mēs nevaram uzglabāt 2147483648th raksturs. Tāpēc Java maksimālais virknes garums ir 0 līdz 2147483647 . Tātad teorētiski mums var būt virkne, kuras garums ir 2 147 483 647 rakstzīmes.
Atradīsim maksimālo virknes garumu, izmantojot Java programmu.
StringMaxSize.java
tīģera lauvas atšķirība
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;>
Izvade:
Trying to initialize n with value Integer.MAX_VALUE + 1 n = -2147483648
1000;>