1. في جافا ، لا يوجد بيان غوتو. نظرًا لأن العدد الكبير من استخدام عبارات GOTO سيقلل من قابلية القراءة والصيانة للبرنامج ، فإن لغة Java تلغي استخدام GOTO. في الوقت نفسه ، من أجل تجنب الالتباس الناجم عن المبرمجين الذين يستخدمون GOTO بمفردهم ، لا تزال لغة Java تعرّف GOTO بأنها كلمة رئيسية ، لكنها لا تحدد أي بناء جملة ، لذلك يطلق عليها "الكلمات المحجوزة".
2 على الرغم من أن الصواب ، يتم عرض FALSE و NULL بألوان مختلفة في IDE ، فهي ليست كلمات رئيسية ، ولكن "الثوابت الحرفية" ، تمامًا مثل ABC من نوع السلسلة.
3 حاول تجنب استخدام $ عند تحديد اسم ، لأنه عندما يقوم المترجم بتجميع ملف .java ، سيتم تجميع "$" إلى موصل من النوع العلوي ونوع المستوى السفلي. انظر المثال التالي:
عند التجميع (javac test3.java) هذا الرمز ، سيقوم المترجم بالإبلاغ عن الخطأ التالي: test.java:12: خطأ: duplication class: com.javastack.test.outer.inner class inner { ^ ^
4 تتم معالجة أحرف الهروب Unicode مبكرًا جدًا ، قبل تحليل البرنامج. على سبيل المثال:
يحدث هذان السطران من أخطاء تجميع الكود في البرنامج. يمثل هذان الرموز Unicode "Wrap" و "عودة النقل" على التوالي ، لذلك عندما يجمع المترجم ، يبدو الرمز هكذا:
يتم تشفير رمز Unicode 5 باستخدام حرف 16 بت ويتم تمثيله بنوع char في Java. توسعت Unicode الآن إلى مليون حرف ، وتلك التي تتجاوز الحد الأقصى 16 بت تصبح أحرفًا تكميلية. لا يمكن تمثيل جميع الشخصيات التكميلية بواسطة ثوابت الشخصية.
6 عندما يشارك بايت قصير ، تشار في العملية ، فإن النتيجة هي نوع int ، وليس نفس النوع. إذا كان المتغير من نوع البايت ، قصيرًا ، وبايت ، عندما يتم تعيينه ثابتًا من وقت الترجمة ، ولا يتجاوز الثابت نطاق القيمة للمتغير ، يمكن للمترجم أن يقوم بتحويل تقلص ضمني. يعد تحويل الانكماش الضمني هذا آمنًا لأن تحويل الانكماش ينطبق فقط على تعيين المتغيرات ، وليس على طريقة استدعاء البيانات ، أي ليس للمعلمة التي تمر أثناء استدعاء الطريقة. (انظر المشكلة الصغيرة مع تحويل النوع الافتراضي في Java للحصول على التفاصيل)
7 لاحظ نوع char ، وهو نوع غير موقّع. لذلك ، يجب عرض التحويل بين Char و Short أو Char و Byte باستخدام تحويل النوع. يعد التحويل من Byte إلى Char إلى تحويل الانكماش الممتد مميزًا تمامًا ، أي ، يتم توسيع التحويل إلى البايت إلى int أولاً ، ثم يتقلص إلى char.
8 في التحويل الموسع بين بيانات عدد صحيح ، إذا كان المعامل من نوع char (نوع غير موقّع) ، يتم تنفيذ التوسع غير الموقّع ، مع وجود بت التوسع 0. إذا كان المعامل بايت أو قصيرًا أو int (النوع الموقّع) ، يتم تنفيذ التوسع الموقّع ، مع وجود جزء التوسع في علامة المتغير.
9 التحويل المتقلص بين بيانات عدد صحيح هو ببساطة اقتطاع البتات العالية وتجاهلها دون إجراء أي معالجة أخرى.
10 0.1+0.2 لا يساوي 0.3.System.out.println ((مزدوج) 0.1+ (مزدوج) 0.2) ؛ النتيجة الإخراج لهذا البيان هي 0.3000000000000000000004. نظرًا لأن أجهزة الكمبيوتر تستخدم ثنائيًا لتخزين البيانات ، ولا يمكن تمثيل العديد من العشرية بدقة في الثنائي (في الواقع ، فإن معظم العشرية تقريبية) ، تمامًا مثل استخدام العشرية العشرية لا يمكن أن تمثل بدقة 1/3. تخزن معظم أنواع النقاط العائمة قيمها تقريبًا تقريبًا في أجهزة الكمبيوتر ، بدلاً من بدقة أنواع عدد صحيح. مثال آخر هو حلقة ميتة: لـ (تعويم f = 10.1f ؛ f! = 11 ؛ f+= 0.1f) {}
11 يمكن أن يحتفظ نوع التعويم من 7 إلى 8 أرقام مهمة ، في حين أن النوع المزدوج يمكن أن يحتفظ بـ 15 إلى 16 رقمًا مهمًا. لذلك ، عندما تكون قيمة نوع int أو النوع الطويل أكثر من العدد الصحيح من مزدوج أو تعويم ، فإن بعضًا من أدنى البتات المهمة من القيمة ستُفقد ، مما يؤدي إلى فقدان الدقة. في هذا الوقت ، سيتم استخدام وضع التقريب الأخير IEEEE754 لاستخراج قيمة النقطة العائمة الأقرب إلى قيمة عدد صحيح. على الرغم من أن التحويل من عدد صحيح إلى نوع النقطة العائمة هو تحويل ممتد ، عندما تكون القيمة كبيرة أو صغيرة (القيمة المطلقة كبيرة) ، ستحدث خسارة معينة.
12 كيفية حساب i ++ j؟ (هذا السؤال ليس ذا معنى كبير للمناقشة في C/C ++) ، لأن C/C ++ يعتمد على تنفيذ بنية الأجهزة ، وستكون النتائج مختلفة في بيئات مختلفة. ومع ذلك ، في Java ، يتم إصلاح هذه النتيجة ولا تتأثر ببيئة الأجهزة والمنصة التي تعمل عليها). الإجابة: وفقًا لقواعد الجشع ، فإن Front + + + أفضل من الظهر + + ، والنتيجة هي (i ++) + j
13 i ++ و ++ أنا بالفعل +1 أولاً ثم تم تعيينها. ++ أنا ، لا يوجد شيء يمكن قوله ؛ i ++ ، أخذ j = i ++ ؛ على سبيل المثال ، يكون التنفيذ على المستوى الأساسي هو: temp = i ؛ i = i + 1 ؛ ي = درجة الحرارة ؛ لذلك ، أنا = 15 ؛ i = i ++ ؛ نتيجة هذا التعبير هي 15. (لأنه بعد إضافة واحدة ، يتم تنفيذ مهمة أخرى ، وتتغير من 16 إلى 15)
14 +0 و -0 في تخزين متغير نوع النقطة العائمة ، تختلف بتات الإشارة. عندما يشارك -0 و +0 في العمليات ذات الصلة لأنواع النقاط العائمة (مثل عمليات التقسيم والبقايا) ، يمكن إنتاج نتائج مختلفة.
15 يختلف انقسام الطور وحساب التوازن بين النقطة العائمة عن تقسيم الطور وحساب التوازن في الأعداد الصحيحة. عندما يكون المقسوم 0 ، لن تقوم عملية النقطة العائمة بإنشاء استثناء ArithMeticeSception.
16 فئة السلسلة عبارة عن فئة غير قابلة للتطبيق ، وبمجرد إنشاء كائناتها ، لا يمكن تدميرها. إن الطرق التي يبدو أنها تعدل تسلسل الأحرف في فئة السلسلة تُرجع بالفعل كائن السلسلة الذي تم إنشاؤه حديثًا بدلاً من تعديل كائنه الخاص.
17 نظرًا لأن كائنات السلسلة غير قابلة للتغيير ، فهي آمنة لخيط الخيط ويمكن تنفيذها بحرية للمشاركة.
18 داخل فئة السلسلة ، يتم استخدام صفيف الأحرف (char []) للحفاظ على تسلسل الأحرف. الحد الأقصى لطول السلسلة هو الحد الأقصى لطول صفيف الأحرف. من الناحية النظرية ، فإن الحد الأقصى للطول هو الحد الأقصى لقيمة النوع int ، أي 2147483647. في الممارسة العملية ، تكون القيمة القصوى التي يمكن الحصول عليها أقل عمومًا أقل من القيمة القصوى النظرية.
19 الطريقة الرئيسية () هي في الأساس نفس الطرق الأخرى من حيث سلوك الأداء. يمكن أن يتم تحميله بشكل زائد أو يسمى أو ورث أو مخفيًا بطرق أخرى ، أو استثناءات تم إلقاؤها مع معلمات النوع. يمكننا أيضًا استدعاء الطريقة الرئيسية (أو طريقة أخرى) من خلال الانعكاس في البرنامج.
20 عندما تكون أسماء طريقتين أو أكثر هي نفسها وقائمة المعلمات مختلفة ، فإن هذه الطرق تشكل التحميل الزائد. يمكن تمييز الطريقة التي تم تحميلها الزائد بناءً على النوع المقابل لقائمة المعلمات وعدد المعلمات. ومع ذلك ، لا يمكن استخدام اسم المعلمة ، ونوع إرجاع الطريقة ، وقائمة الاستثناءات ومعلمة النوع للطريقة كظروف لتمييز الطريقة المحملة.
21 أي طريقة لاختيار الاتصال ، يكون الطلب كما يلي:
22 ، يتم تحديد الفرق الأساسي بين إعادة الكتابة والخفي هو أن إعادة الكتابة ملزمة ديناميكيًا ، ويتم تحديد أعضاء الفئة ذات الصلة بناءً على النوع الفعلي للكائن المشار إليه بواسطة مرجع وقت التشغيل. الاختباء مرتبط بشكل ثابت ، ويتم تحديد الأعضاء المعنيين من المكالمة بناءً على النوع الثابت المشار إليه في وقت الترجمة. بمعنى آخر ، إذا كانت الفئة الفرعية تخطى طريقة فئة الأصل ، عندما يشير مرجع الفئة الأصل إلى كائن فئة الطفل ، يتم استدعاء طريقة الفئة الفرعية من خلال مرجع الفئة الأصل. إذا اختبأت فئة الطفل طريقة الفئة الأصل (متغير العضو) ، فلا تزال طريقة الفئة الأصل (متغير العضو) تسمى من خلال الإشارة إلى الفئة الأصل.
23 يسمى المنشئ بشكل متكرر. سيقوم مُنشئ الفئة الفرعية باستدعاء مُنشئ الفئة الأصل حتى يتم استدعاء مُنشئ فئة الكائن.
24 لا يقوم المنشئ بإنشاء كائن. يتم استدعاء المُنشئ من قبل النظام عند إنشاء كائن باستخدام جديد ويستخدم لتهيئة أعضاء المثيل في الفصل. بالترتيب ، يتم إنشاء الكائن أولاً ، ثم يسمى المنشئ. (لا يولد المنشئ كائنات جديدة)
25 المنشئ الافتراضي ليس فارغًا. سيقوم هذا المُنشئ بالاتصال بمنشئ المعلمة الفئة الأصل وقد يؤدي تهيئة متغيرات الأعضاء على المثيل. لذلك ، يستدعي المُنشئ الافتراضي على الأقل مُنشئ الفئة الأصل ، وقد يقوم بمزيد من العمل ، بما في ذلك كتل تهيئة الإعلان المتغيرة وتهيئة المثيل ، وكلاهما تم تنفيذه في المنشئ.
26 عندما تكون أنواع المعاملين من == أو! = المشغل أحد أنواع البيانات الأساسية والآخر هما أنواع مرجع فئة التفاف ، قم بإلغاء تحديد نوع المرجع في نوع البيانات الأساسي ، ثم مقارنة ما إذا كانت قيم النوعين من البيانات الأساسية متساوية.
27 في Java ، تعد المصفوفات أيضًا فصولًا ، وتشير المتغيرات المرجعية التي تم إعلانها بواسطة المصفوفات إلى كائنات نوع الصفيف. ترث جميع المصفوفات فئة الكائن وتنفيذ واجهات java.lang.clonable و java.io.serializable. يتضمن أعضاء صفيف الطول المتغير (موجود ضمنيًا) والأعضاء الموروثة من فئة الكائن. استنساخ وقابل للتسلسل هما واجهتان ملحوظان ، ولا يتم الإعلان عن أي أعضاء بشكل صريح في هذه الواجهات.
28 الواجهة هي تصميم مجردة تمامًا ولا يمكن إنشاء مثيل له. نوع العذر الذي أنشأته بطريقة جديدة هو في الواقع إنشاء فئة مجهولة التي تنفذ نوع الواجهة.
29 إذا أعلن اثنان من الواجهتين نفس المتغير x ، فسيحدث خطأ في التجميع عندما ترث الواجهة الواجهتين في نفس الوقت ، أو تنفذ فئة معينة الواجهتين في نفس الوقت.
30 إذا تم الإعلان عن الطريقة التي تحمل نفس الاسم في كلا الواجهتين ، ولم تشكل الطريقتان حمولة زائدة ، عندما يمكن أن ترث الواجهة الواجهة في نفس الوقت ، أو يمكن أن ترث فئة معينة من الواجهتين في الوقت نفسه ، في نفس الوقت ، يجب أن يكون هناك نوع من الأسلوب ، ويجب أن يكون هناك نوع من التوقيع على نوع mantature في نفس الوقت ، ويجب أن يكون هناك نوع من الأسلوب. نوع الإرجاع للطريقة m.