1. ميزات جديدة من Java JDK1.5
1. الأدوية:
قائمة <Tring> strs = new ArrayList <String> () ؛ // حدد نوع التخزين للمجموعة. عند تخزين البيانات في المجموعة أعلاه ، يجب تخزين بيانات السلسلة ، وإلا فإن المترجم سيبلغ عن خطأ
2. for-eCh
على سبيل المثال ، يمكننا اجتياز المجموعة أعلاه من خلال EACH ، مما يجعل الأمر أسهل وأكثر وضوحًا
لـ (String S: Strs) {system.out.println (s) ؛}ملاحظة: عند استخدام FOR-EACH لاجتياز مجموعة ، يجب على المجموعة إلى Traverse تنفيذ واجهة Iterator
3. وظائف التفريغ والتعبئة التلقائي
نسخة الكود كما يلي:
ماذا يعني ذلك؟
يحدد JDK1.5 فئة تغليف لكل نوع بيانات أساسي. قم بعمل أنواع البيانات الأساسية في Java أيضًا لها كائنات خاصة بها ، على سبيل المثال: int -> integer ،
مزدوج -> مزدوج ،
طويل -> طويل ،
char -> الشخصية ،
تعويم -> تعويم ،
منطقية -> منطقية ،
قصير -> قصير ،
بايت -> بايت
التغليف التلقائي: تحويل الأنواع الأساسية إلى كائنات ، على سبيل المثال: int -> integer
التفريغ التلقائي: تحويل الكائنات إلى أنواع البيانات الأساسية ، على سبيل المثال: Integer -> int
يمكن الآن الآن حل المشكلة التي لم تتمكن المجموعة من تخزين أنواع البيانات الأساسية قبل حل JDK1.5.
4. التعداد:
التعداد هي ميزة مقارنة قدمها JDK1.5. الكلمة الرئيسية هي التعداد
على سبيل المثال: حدد التعداد الذي يمثل إشارة المرور
التعداد العام myenum {أحمر ، أخضر ، أصفر}5. المعلمات المتغيرة
ماذا يعني ذلك؟ اسمحوا لي أن أعطيك مثالاً: قبل JDK1.5 ، عندما أردنا تمرير معلمات متعددة من نفس النوع إلى طريقة ما ، كان لدينا طريقتان لحلها ، 1. تمرير صفيف مباشرة ، 2. تمرير أكبر عدد ممكن من المعلمات.
على سبيل المثال:
printcolor printcolor (سلسلة حمراء ، سلسلة خضراء ، سلسلة أصفر) {} أو
printcolor void printcolor (سلسلة []) {} على الرغم من أن معلمات طريقة الكتابة بهذه الطريقة يمكن أن تحقق التأثير الذي نريده ، أليس هذا مزعجًا بعض الشيء؟ علاوة على ذلك ، ماذا يجب أن نفعل إذا كان عدد المعلمات غير مؤكد؟ يمكن للمعلمات المتغيرة التي توفرها Java JDK1.5 حل هذه المشكلة تمامًا ، على سبيل المثال:
printcolor printcolor (سلسلة ... ألوان) {}
يمكن تعريفه على هذا النحو ، ماذا يعني ذلك؟ إذا كانت المعلمات من نفس النوع ، فيمكنك استخدام النموذج "Type + ثلاث نقاط ، يليه اسم المعلمة". ميزة ذلك هي أنه طالما أن أنواع المعلمات هي نفسها ، فلا يوجد حد لعدد المعلمات التي تم تمريرها: يجب أن تكون المعلمة المتغيرة هي العنصر الأخير في قائمة المعلمات (تنطبق هذه الميزة على كل من كائنات البيانات والبيانات الأساسية)
6. استيراد ثابت
المزايا: يمكن أن يؤدي استخدام الاستيراد الثابت إلى جعل جميع المتغيرات الثابتة والطرق الثابتة للفئة المستوردة المرئية مباشرة في الفئة الحالية. استخدام هؤلاء الأعضاء الثابتة لا يحتاج إلى إعطاء أسماء فصولهم.
العيوب: الإفراط في الاستخدام سيقلل من قابلية قراءة الكود
7. مكتبة توافق الخيط
تعد مكتبة Concurrency Thread ميزة متقدمة من MultiThreading التي اقترحتها Java 1.5. يقع في الحزمة: java.util.concurrent
يشمل
1.
2. وصف اتصال الموضوع: الشرط
3. تجمع الموضوع
ExecutorService
3. مزامنة قائمة الانتظار
arrayblockingqueue
4. مزامنة المجموعات
concurrenthashmap ، CopleDwriteArrayList
5. أداة مزامنة الموضوع
إشارة
لا يزال هناك العديد من المحتويات (المهمة جدًا) حول مكتبات توافق الخيط ، لذلك لن أدرجها واحدًا تلو الآخر هنا. يمكن للأصدقاء المهتمين الاطلاع على مستندات المساعدة.
2. ميزات جديدة من JDK1.6
1. فئة desktop و systemtray فئة
يمكن استخدام السابق لفتح المتصفح الافتراضي للنظام لتصفح عنوان URL المحدد ، وفتح عميل البريد الإلكتروني الافتراضي للنظام لإرسال رسائل بريد إلكتروني إلى عنوان البريد الإلكتروني المحدد ، واستخدام التطبيق الافتراضي لفتح أو تحرير الملفات (على سبيل المثال ، استخدام Notepad لفتح ملف مع TXT كلاحقة) ، واستخدام الطابعة الافتراضية للنظام لمستندات الطباعة ؛ يمكن استخدام هذا الأخير لإنشاء برنامج درج في منطقة علبة النظام.
2. استخدم JaxB2 لتنفيذ التعيين بين الكائنات و XML
JaxB هو اختصار بنية Java لربط XML ، والذي يمكنه تحويل كائن Java إلى تنسيق XML والعكس بالعكس.
نسمي التعيين بين الكائنات وقواعد البيانات العلائقية ORM ، وفي الواقع ، يمكن أيضًا تسمية التعيين بين الكائنات و XML OXM (رسم خرائط XML). اتضح أن Jaxb جزء من Java EE. في JDK1.6 ، تضعها Sun في Java SE ، وهي أيضًا ممارسة Sun المعتادة. إصدار JAXB الذي يأتي مع JDK1.6 هو 2.0. بالمقارنة مع 1.0 (JSR 31) ، يستخدم JaxB2 (JSR 222) شرح ميزة JDK5 الجديدة لتحديد الفصول والسمات المراد ربطها ، مما يبسط إلى حد كبير عبء عمل التطوير. في الواقع ، في Java EE 5.0 ، تقوم EJB وخدمات الويب أيضًا بتبسيط التطوير من خلال التعليقات التوضيحية. بالإضافة إلى ذلك ، يستخدم JaxB2 Stax (JSR 173) لمعالجة مستندات XML في الأسفل.
بالإضافة إلى JaxB ، يمكننا أيضًا تحقيق نفس الوظائف من خلال XMLBeans و Castor ، إلخ.
3. فهم ستاكس
Stax (JSR 173) هو واجهة برمجة تطبيقات أخرى لمعالجة مستندات XML في JDK1.6.0 بالإضافة إلى DOM و SAX.
أصل Stax: هناك طريقتان لمعالجة مستندات XML في Jaxp1.3 (JSR 206): DOM (نموذج كائن المستند) و SAX (API بسيط لـ XML).
منذ jaxb2 (JSR 222) و Jax-WS 2.0 (JSR 224) في jdk1.6.0 استخدموا Stax ، قررت Sun إضافة Stax إلى عائلة Jaxp وترقية إصدار JaxP إلى 1.4 (Jaxp1.4 هي نسخة صيانة من Jaxp1.3). إصدار JAXP في JDK1.6 هو 1.4. Stax هو API المتدفق للاختصار من XML ، واجهة برمجة التطبيقات التي تستخدم مستندات XML المسحوبة. يوفر Stax واجهة برمجة التطبيقات (API) استنادًا إلى مؤلف الحدث للسماح للمبرمجين بالتحكم في عملية تحليل مستند XML. يعبر البرنامج هذا الحدث Iterator لمعالجة كل حدث تحليلي. يمكن اعتبار حدث التحليل هو السحب من قبل البرنامج ، أي أن البرنامج يطالب المحلل بإنشاء حدث تحليل ثم يتعامل مع الحدث ، ثم يتسبب في توليد المحلل المحلل. هذه الحلقات حتى يتم مواجهة شخصية إنهاء المستند. تقوم SAX أيضًا بمعالجة مستندات XML بناءً على الأحداث ، ولكنها تستخدم وضع الدفع إلى التحليل. بعد أن يقوم المحلل بتحليل وثيقة XML الكاملة ، فإنه يولد أحداث تحليل فقط ، ثم يدفعها إلى البرنامج لمعالجة هذه الأحداث. يتبنى DOM طريقة تعيين مستند XML بأكمله لشجرة الذاكرة ، بحيث يمكن الحصول على بيانات العقدة الأصل وعقد الطفل وعقد الأخ بسهولة ، ولكن إذا كانت المستند كبيرًا ، فسيؤثر ذلك بشكل خطير على الأداء.
4. استخدم برنامج التحويل البرمجي API
الآن يمكننا استخدام واجهة برمجي البرمجيات من JDK1.6 (JSR 199) لتجميع ملفات مصدر Java ديناميكيًا. يجمع واجهة برمجة تطبيقات برنامج التحويل البرمجي بين وظيفة الانعكاس لتحقيق توليد ديناميكي من رمز Java وتجميع هذه الرموز وتنفيذها ، والتي تعد قليلاً من ميزة اللغة الديناميكية.
هذه الميزة مفيدة للغاية لبعض التطبيقات التي تتطلب تجميع ديناميكي ، مثل JSP Web Server. عندما نقوم بتعديل JSP يدويًا ، لا نريد إعادة تشغيل خادم الويب لمعرفة التأثير. في هذا الوقت ، يمكننا استخدام واجهة برمجة تطبيقات برنامج التحويل البرمجي لتنفيذ التجميع الديناميكي لملفات JSP. بطبيعة الحال ، يدعم خادم الويب JSP الحالي أيضًا نشر JSP الساخن. يستدعي خادم الويب JSP الحالي JAVAC من خلال Runtime.exec أو ProcessBuilder لتجميع الرمز أثناء العملية. تتطلب هذه الطريقة منا إنشاء عملية أخرى لإجراء تجميع ، وهو أمر غير أنيق بما فيه الكفاية ويسهل جعل الرمز يعتمد على نظام تشغيل معين. يوفر واجهة برمجة تطبيقات برنامج التحويل البرمجي طريقة أكثر ثراءً للقيام بتجميع ديناميكي من خلال مجموعة من واجهات برمجة التطبيقات القياسية سهلة الاستخدام ، وهي منصة متقاطعة.
5.
يوفر JDK1.6 واجهة برمجة تطبيقات خادم HTTP بسيطة. وفقًا لهذا ، يمكننا إنشاء خادم HTTP المدمج الخاص بنا ، والذي يدعم بروتوكولات HTTP و HTTPS ويوفر جزءًا من تنفيذ HTTP1.1. يمكن تنفيذ الجزء الذي لم يتم تنفيذه عن طريق تمديد واجهة برمجة تطبيقات HTTP Server الحالية. يجب على المبرمجين تنفيذ واجهة httphandler بأنفسهم. سيقوم HTTPServer بالاتصال بأسلوب رد الاتصال لفئة تنفيذ HTTPhandler للتعامل مع طلبات العميل. هنا ، نسمي طلب HTTP واستجابته تبادل ، والذي يتم لفه في فئة httpexchange. Httpserver مسؤول عن تمرير httpexchange إلى طريقة رد الاتصال لفئة تنفيذ httphandler.
6. واجهة برمجة تطبيقات معالجة التعليقات التوضيحية القابلة للتوصيل (واجهة برمجة تطبيقات معالجة التعليقات التوضيحية القابلة للتوصيل)
توفر واجهة برمجة تطبيقات معالجة التعليقات التوضيحية المكون الإضافي (JSR 269) واجهة برمجة تطبيقات قياسية للتعليق التعليقات التوضيحية (JSR 175)
في الواقع ، لا يستخدم JSR 269 فقط للتعامل مع التعليقات التوضيحية. أعتقد أن الوظيفة الأكثر قوة هي أنها تنشئ نموذجًا للغة Java نفسها. يقوم بتعيين عناصر لغة Java مثل الطريقة ، الحزمة ، المنشئ ، النوع ، المتغير ، التعداد ، التعليق في الأنواع والعناصر (ما هو الفرق بين الاثنين؟) ، وبالتالي تعيين دلالات لغة Java إلى كائنات. يمكننا أن نرى هذه الفصول تحت حزمة javax.lang.model. حتى نتمكن من استخدام واجهة برمجة التطبيقات التي توفرها JSR 269 لإنشاء بيئة metaprogramming الغنية بالميزات. يستخدم JSR 269 معالج التعليقات التوضيحية لمعالجة التعليقات التوضيحية أثناء التجميع بدلاً من التشغيل. يعادل معالج التعليقات التوضيحية مكونًا إضافيًا من برنامج التحويل البرمجي ، لذلك يطلق عليه معالجة التعليقات التوضيحية للإدراج. إذا تم إنشاء رمز Java الجديد عند معالجة معالج التعليقات التوضيحية التعليق التوضيحي (تنفيذ طريقة العملية) ، فسيقوم برنامج التحويل البرمجي بالاتصال معالج التعليقات التوضيحية مرة أخرى. إذا تم إنشاء رمز جديد للمعالجة الثانية ، فسيقوم بذلك باستدعاء معالج التعليقات التوضيحية حتى لا يتم إنشاء رمز جديد. في كل مرة يتم فيها تنفيذ طريقة العملية () ، يطلق عليها "جولة" ، بحيث يمكن اعتبار عملية معالجة التعليقات التوضيحية بأكملها بمثابة تسلسل دائري.
تم تصميم JSR 269 بشكل أساسي كأبي أدوات للأدوات أو الحاويات. على سبيل المثال ، نريد إنشاء إطار اختبار للوحدة المستند إلى التعليقات التوضيحية (مثل TestNG) لاستخدام التعليقات التوضيحية لتحديد طرق الاختبار التي تحتاج إلى تنفيذها أثناء الاختبار.
7. استخدم وحدة التحكم لتطوير برامج وحدة التحكم
يوفر JDK1.6 فئة Java.io.console المستخدمة خصيصًا للوصول إلى أجهزة وحدة التحكم القائمة على الأحرف. إذا كان برنامجك يريد التفاعل مع CMD تحت Windows أو Terminal تحت Linux ، فيمكنك استخدام فئة وحدة التحكم للقيام بذلك. لكننا لا نحصل دائمًا على وحدة التحكم المتوفرة ، سواء كانت وحدة التحكم في JVM تعتمد على النظام الأساسي الأساسي وكيف يتم استدعاء JVM. إذا تم بدء تشغيل JVM على سطر أوامر تفاعلي (مثل Windows CMD) ولم يتم إعادة توجيه الإدخال والمخرجات إلى مكان آخر ، فيمكنك الحصول على مثيل وحدة تحكم متاح.
8. دعم لغات البرمجة النصية
مثل: Ruby ، Groovy ، JavaScript.
9.Common التعليقات التوضيحية
كانت التعليقات التوضيحية الشائعة في الأصل جزءًا من مواصفات Java EE 5.0 (JSR 244) ، والآن تضع Sun جزءًا منها في Java SE 6.0.
مع إضافة وظيفة بيانات التعليق التوضيحية (JSR 175) إلى Java SE 5.0 ، ستستخدم العديد من تقنيات Java (مثل EJB وخدمات الويب) جزءًا من التعليقات التوضيحية لاستبدال ملفات XML لتكوين معلمات التشغيل (أو دعم البرمجة الإخلاص ، مثل المعاملات الإفراطية لـ EJB). إذا كانت هذه التقنيات تحدد اختباراتها بشكل منفصل لأغراض عامة ، فمن الواضح أنها بنية مكررة بعض الشيء. لذلك ، من المهم تحديد مجموعة من التعليقات التوضيحية العامة لتقنيات Java الأخرى ذات الصلة. يمكن أن يتجنب البناء المكررة مع ضمان اتساق التقنيات المختلفة لـ Java SE و Java EE.
يسرد ما يلي 10 تعليقات توضيحية شائعة التعليقات التوضيحية الاستبقاء الهدف الوصف الذي تم إنشاؤه SourCeannotation_type ، مُنشئ ، حقل ، محلي _variable ، الطريقة ، الحزمة ، المعلمة ، النوع. يتم استخدام التعليمات البرمجية المصدر التي تم إنشاؤها بواسطة التعليق التوضيحي لتسمية المورد الذي تم إنشاؤه. الحاوية تضخ تبعيات الموارد الخارجية وفقًا لهذا. هناك طريقتان: الحقن القائم على الميدان والحقن القائم على الوضع. وقت تشغيل الموارد. اكتب تسميات تبعيات خارجية متعددة في نفس الوقت. ستعمل الحاوية على حقن جميع هذه التبعيات الخارجية في طريقة ما بعد الاستفسار. يتم تشغيل الطريقة بعد حقن الحاوية جميع التبعيات لأداء أعمال التهيئة بعد حقن التبعية. يمكن وصف طريقة واحدة فقط من طريقة تشغيل PrectRuct Prevestroy. قبل أن يتم حذف مثيل الكائن من الحاوية ، يجب أن يتم تسمية طريقة رد الاتصال المراد تنفيذها على أنها نوع وقت تشغيل Runas Prevestroy لتسمية دور الأمان لتنفيذ طريقة الفئة المسمى. يجب أن يكون هذا الدور الأمني متسقًا مع الدور الأمني للحاوية. نوع وقت التشغيل Rolesallow ، يتم استخدام الطريقة لتسمية أدوار الأمان التي تسمح بتنفيذ الفئات أو الأساليب المسمى. يجب أن يكون هذا الدور الأمني متسقًا مع دور أمن الحاويات. تتيح الطريقة لجميع الأدوار تنفيذ الفصول أو الأساليب المسمى. Denyall نوع وقت التشغيل. لا تسمح الطريقة بأي دور بتنفيذ الفئات أو الأساليب المسمى ، مما يشير إلى أنه لا يمكن تشغيل الفئة أو الأساليب في حاوية Java EE. يتم استخدام نوع وقت تشغيل DECLAREROLES لتحديد أدوار الأمان التي يمكن اختبارها بواسطة التطبيق. عادة ما يتم استخدامه لاستخدام isuserinrole للتحقق من أدوار الأمان.
يلاحظ:
1. لا يمكن تطبيق ROLESLOWSED ، المسموح به ، و DENYALL على أدوار فئة أو طريقة ، ومن المسموح به ، و DENYALL المسمى على الفصل سوف يربط عن الأعمدة ، وعلم ، DENYALLRUNAS ، ROLEOLLED ، المسمار ، DENYALL و PRENAROLES لم تضاف إلى Java SE 6.0 للتعامل مع الصلاحيات المذكورة أعلاه. تحتوي Java SE6.0 فقط على فئات التعريف في التعليقات التوضيحية الخمسة الأولى في الجدول أعلاه ، ولا تحتوي على محرك للتعامل مع هذه التعليقات التوضيحية. يمكن القيام بهذا العمل من خلال واجهة برمجة تطبيقات معالجة التعليقات التوضيحية القابلة للتوصيل (JSR 269).
بالمقارنة مع الميزات الجديدة التي تبلغ 1.6 ، فإن الميزات الجديدة لـ 1.7 تجعلنا أكثر حماسة لأنه شيء نتطلع إليه ومرئيًا وملموسًا.
3. ميزات جديدة من JDK1.7
1. القيمة الاسمية الثنائية
في JAVA7 ، يمكن تمثيل قيمة نوع التشكيل (البايت ، القصيرة ، int ، طويلة) بأنواع ثنائية. عند استخدام القيم الثنائية ، يجب إضافة OB أو OB أمامها ، على سبيل المثال:
int a = 0b01111_00000_11111_00000_10101_01010_10 ؛ قصير B = (قصير) 0B01100_00000_111111_0 ؛ Byte C = (byte) 0b00000_0001 ؛
2. دعم المتغيرات الرقمية لخطوط الانزلاق
يمكن لـ JDK1.7 إضافة خط شريحة إلى متغير من النوع الرقمي.
ولكن هناك بعض الأماكن التي لا يمكن إضافتها
1. بداية ونهاية الرقم
2. قبل وبعد النقطة العشرية
3. قبل F أو L ، على سبيل المثال:
int num = 1234_5678_9 ؛
float num2 = 222_33f ؛
Num3 = 123_000_111L ؛
3. دعم التبديل للسلسلة
هل كان لديك دائمًا علامة استفهام من قبل؟ لماذا يتوفر C# في Java ولكن لا؟ ها ، لكن Java على ما يرام أيضًا بعد JDK1.7 ، على سبيل المثال:
حالة السلسلة = "OrderState" ؛ Switch (status) {case "ordercancel": system.out.println ("Order Complation") ؛ استراحة؛ حالة "ordersuccess": system.out.println ("الاشتراك الناجح") ؛ استراحة؛ الافتراضي: system.out.println ("الحالة غير معروفة") ؛ }4. bith-with-merce
المحاولة مع الموارد هي إعلان محاولة يحدد موارد واحدة أو أكثر. يشير هذا المورد إلى الكائن الذي يحتاجه البرنامج إلى إغلاقه بعد معالجته. ضمان المحاولة مع الموارد إغلاق كل مورد بعد اكتمال المعالجة.
الموارد التي يمكن أن تستخدم المحاولة مع الموارد هي:
أي كائن ينفذ واجهة java.lang.autoclosable java.io.closable.
على سبيل المثال:
السلسلة الثابتة العامة readfirstlinefromfile (مسار السلسلة) يلقي ioException {try (bufferedReader br = new BufferedReader (New FileReader (path))) {return br.readline () ؛ }}
في Java 7 والإصدارات اللاحقة ، يقوم BufferedReader بتنفيذ واجهة Java.lang.Autoclosable.
نظرًا لأن قائد Bufferreader محدد في إعلان المحاولة مع الموارد ، سيتم إيقاف تشغيله تلقائيًا بغض النظر عما إذا كان بيان المحاولة طبيعيًا أم غير طبيعي. قبل Java7 ، تحتاج إلى استخدام الكتل أخيرًا لإغلاق هذا الكائن.
5. التقاط استثناءات متعددة وأعد إدخال الاستثناء من خلال فحص النوع المحسّن
على سبيل المثال:
public static void first () {try {bufferedReader reader = new BufferedReader (new fileReader ("")) ؛ الاتصال con = null ؛ بيان stmt = con.createstatement () ؛ } catch (ioException | sqlexception e) {// catch استثناءات متعددة ، e هو النوع النهائي e.printstacktrace () ؛ }}المزايا: استخدام مصيد واحد للتعامل مع استثناءات متعددة أصغر وأكثر كفاءة من استخدام المصيد المتعدد للتعامل مع استثناء واحد مع رمز Bytecode الذي تم إنشاؤه عن طريق معالجة استثناء واحد.
6. اكتب الاستدلال عند إنشاء الأدوية الجيلية
طالما أن المترجم يمكن أن يستنتج معلمات النوع من السياق ، يمكنك استبدال المعلمات العامة بزوج من قوسين الزاوية الفارغة <>. يسمى هذا الزوج من الأقواس من القطاع الخاص. قبل Java SE 7 ، يجب عليك القيام بذلك عند إعلان كائن عام
قائمة <Tring> list = new ArrayList <String> () ؛
وبعد Java SE7 ، يمكنك القيام بذلك
قائمة <Tring> list = new ArrayList <> () ؛
نظرًا لأن المترجم يمكن أن يستنتج معلمات النوع من السابق (القائمة) ، لم يعد بإمكانك كتابة معلمات عامة بعد قائمة ArrayList اللاحقة ، ما عليك سوى استخدام زوج من الأقواس الفارغة. بالطبع ، يجب أن تحمل "الماس" <> ، وإلا سيكون هناك تحذير.
يدعم Java SE7 فقط الاستدلال المحدود من النوع: يمكنك فقط استخدام الاستدلال نوعًا إذا تم الإعلان عن نوع المعلمة المُنشئ بشكل كبير في السياق ، وإلا فلن يعمل.
قائمة <Tring> list = new ArrayList <> () ؛ list.add ("a") ؛ // هذا لا يعمل List.Addall (ArrayList جديد <> ()) ؛ // هذا يمكن أن يكون قائمة <؟ يمتد String> list2 = new ArrayList <> () ؛ list.addall (list2) ؛
7. (لا شيء)
8. أضف بعض الأدوات والأساليب الجديدة للحصول على المعلومات البيئية
على سبيل المثال:
file system.getuserhomedir () // نظام ملفات المستخدم الحالي.
9. إضافة آمنة ، الطرح ، الضرب والقسمة
على سبيل المثال:
int math.safetoint (قيمة طويلة) int math.safenegate (int value) math.safesubtract (القيمة الطويلة 1 ، القيمة int 2) Math.Safenegate (قيمة طويلة) int Math.Safeadd (int value1 ، int value2) math.safeadd (value1 ، int value2) math.safeadd (long value1 ، long value2) int math.safesubtract (int value1 ، int value2)
حسنًا ، تم فرز الكثير حتى الآن. سأضيفه لاحقًا.
تجدر الإشارة إلى أنه إذا لم تكن متأكدًا من إصدار JDK السابق ، فلا تستخدم ميزات جديدة ، وإلا فقد تكون هناك مشاكل في هذا أو ذاك.