logo

גודל מקסימלי של מחרוזת Java

בחלק זה, נדון מהו הגודל המקסימלי של המחרוזת ב-Java.

ב Java , א חוּט יכול להיחשב כמערך של תווים, ורצף התווים נקרא מחרוזת. המחלקה String מייצגת מחרוזות תווים. לא נוכל לשנות את המחרוזת לאחר יצירתה. לא ניתן לשתף אובייקטי מחרוזת מכיוון שהם כן בלתי ניתן לשינוי . לדוגמה, שקול את המחרוזת הבאה:

רשימת אתחול python
 String str='javatpoint'; 

המחרוזת שלמעלה מקבילה ל:

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

המחלקה String מספקת את שיטת length() הקובעת את אורך המחרוזת. התחביר של השיטה הוא כדלקמן:

 public int length() 

השיטה מחזירה את אורך המחרוזת. ה אורך החוט שווה למספר של יחידות Unicode במחרוזת. פלטפורמת Java משתמשת בייצוג UTF-16 במערכים של char (כל תו לוקח שני בתים), מחלקות String ו-StringBuffer. בייצוג זה, תווים משלימים מיוצגים כזוג ערכי char, הראשון מטווח הפונדקאיות הגבוהות, (uD800-uDBFF), השני מטווח הפונדקאיות הנמוכות (uDC00-uDFFF).

השיטה מחזירה את האורך שהוא מסוג int. אז, הגודל המרבי של מחרוזת זהה לטווח של סוג הנתונים במספרים שלמים. האורך המקסימלי שיוחזר על ידי השיטה יהיה Integer.MAX_VALUE.

סורק ב-java

הגודל של int ב-Java הוא 4 בתים (כולל ביט חתום, כלומר MSB). הטווח של סוג נתונים שלמים הוא -231ל-231-1 (-2147483648 עד 2147483647). זכור שאיננו יכולים להשתמש בערכים שליליים להוספה לאינדקס. האינדקס נעשה בטווח המקסימלי. זה אומר שאנחנו לא יכולים לאחסן את 2147483648ה' אופי. לכן, האורך המרבי של מחרוזת ב-Java הוא 0 עד 2147483647 . אז, אנו יכולים לקבל מחרוזת באורך של 2,147,483,647 תווים, תיאורטית.

בוא נמצא את האורך המרבי של המחרוזת דרך תוכנית 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;>

תְפוּקָה:

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