logo

جافا سلسلة الحجم الأقصى

في هذا القسم سنناقش ما هو الحد الأقصى لحجم السلسلة في جافا.

في جافا ، أ خيط يمكن اعتبارها مصفوفة من الأحرف، ويسمى تسلسل الأحرف سلسلة. تمثل فئة السلسلة سلاسل الأحرف. لا يمكننا تغيير السلسلة بمجرد إنشائها. لا يمكن مشاركة كائنات السلسلة لأنها كذلك غير قابل للتغيير . على سبيل المثال، خذ بعين الاعتبار السلسلة التالية:

حلقة foreach
 String str='javatpoint'; 

السلسلة أعلاه تعادل:

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

توفر فئة السلسلة طريقة length() التي تحدد طول السلسلة. بناء جملة الطريقة كما يلي:

 public int length() 

تقوم الطريقة بإرجاع طول السلسلة. ال طول السلسلة يساوي عدد وحدات يونيكود في السلسلة. يستخدم نظام Java الأساسي تمثيل UTF-16 في مصفوفات char (كل حرف يأخذ بايتين)، وفئات String، وStringBuffer. في هذا التمثيل، يتم تمثيل الأحرف التكميلية كزوج من قيم char، الأول من نطاق البدائل العالية، (uD800-uDBFF)، والثاني من نطاق البدائل المنخفضة (uDC00-uDFFF).

تقوم الطريقة بإرجاع الطول من النوع int. لذا، فإن الحد الأقصى لحجم السلسلة هو نفس نطاق نوع البيانات الصحيح. سيكون الحد الأقصى للطول الذي سيتم إرجاعه بواسطة الطريقة هو Integer.MAX_VALUE.

حجم int في Java هو 4 بايت (بما في ذلك البت الموقع، أي MSB). نطاق نوع البيانات الصحيح هو -231إلى 231-1 (-2147483648 إلى 2147483647). تذكر أنه لا يمكننا استخدام القيم السالبة للفهرسة. تتم الفهرسة ضمن النطاق الأقصى. وهذا يعني أننا لا نستطيع تخزين 2147483648ذ شخصية. لذلك، الحد الأقصى لطول السلسلة في Java هو 0 إلى 2147483647 . لذلك، يمكن أن يكون لدينا سلسلة بطول 2,147,483,647 حرفًا، نظريًا.

دعونا نجد الحد الأقصى لطول السلسلة من خلال برنامج جافا.

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