‫أساسيات اللغة‬

‫يهدف هذا الفصل إلى التعرف على المفاهيم التالي‪:‬‬
‫✔المتحولت‪.‬‬
‫✔أنماط البيانات‪.‬‬
‫✔العمليات‪.‬‬
‫✔بنى التحكم‪.‬‬
‫✔المصفوفات‪.‬‬
‫✔الصف ‪.String‬‬
‫✔الصف ‪.BufferString‬‬

‫‪1‬‬

‫‪-1‬المتحولت‪:‬‬
‫الشكل العام للتصريح عن متحول‪:‬‬

‫;‪var_Name‬‬
‫;‪var_Name = init_value‬‬

‫‪Data_type‬‬
‫‪Data_Type‬‬

‫‪1.1‬أنماط البيانات‪:‬‬
‫تملك جافا نوعين من أنماط البيانات‪ ،‬النوع الول هو النماط البسيطة ) ‪Primitive‬‬
‫‪ (Type‬والثججاني هججو المراجججع)‪ (Reference‬والججتي تمثججل الصججفوف والمصججفوفات‬
‫والواجهات‪ ،‬حيث قيمة المتحول من نمط مرجع هججي عنججوان فججي الججذاكرة للمكججان‬
‫الذي يتم فيه تخزين القيمة أو القيم الفعلية‪.‬‬
‫تستخدم النماط البسيطة لتخزين قيمة واحدة )رقميججة‪ ،‬محججرف‪ ،‬قيمججة منطقيججة(‪،‬‬
‫وتملك جافا ثمانية أنماط بسيطة‪ ،‬وهي‪:‬‬
‫‪ :byte‬وتخزن على ثمانية بتات أي بايت واحد‪.‬‬
‫‪ :short‬حجمه ‪ 2‬بايت )‪ 16‬بت(‪.‬‬
‫تمثل العداد الصحيحة مع‬
‫إشارةبايت )‪ 32‬بت(‪.‬‬
‫‪ :int‬حجمه ‪4‬‬
‫‪ :long‬حجمه ‪ 8‬بايت )‪ 64‬بت(‪.‬‬
‫‪ :float‬حجمه ‪ 4‬بايت )‪ 10‬أرقام بعد الفاصلة(‪.‬‬
‫تمثل العداد الحقيقية‬
‫‪ :double‬حجمه ‪ 8‬بايت )‪ 20‬رقم بعد الفاصلة(‪.‬‬
‫مع إشارة‬
‫‪ :char‬لتخزين محرف وحيد وحجمه ‪ 2‬بايت )‪ 16‬بت(‪.‬‬
‫‪ :boolean‬لتخزين قيمة منطقية صحيحة أو خاطئة‪.‬‬

‫أكبر قيمة‬
‫‪True‬‬
‫‪2 -)127‬‬
‫‪(1‬‬
‫‪15‬‬
‫‪2 -1‬‬
‫\‪uffff‬‬
‫‪7‬‬

‫‪231-1‬‬
‫‪263-1‬‬

‫يوضح الجدول )‪ (1‬أنماط البيانات البسيطة الموجودة في جافا‪.‬‬
‫أصغر قيمة القيمة البتدائية الحجم)‪ bits‬نمط البيانات‬
‫(‬
‫‪Boolean‬‬
‫‪1‬‬
‫‪False‬‬
‫‪false‬‬
‫‪7‬‬
‫‪Byte‬‬
‫‪8‬‬
‫‪0‬‬
‫‪(2-)128‬‬‫‪215‬‬‫)\)‪u000‬‬
‫‪((0‬‬
‫‪231‬‬‫‪263-‬‬

‫‪0‬‬
‫\‪u000‬‬

‫‪16‬‬
‫‪16‬‬

‫‪Short‬‬
‫‪Char‬‬

‫‪0‬‬
‫‪0L‬‬
‫‪0.0f‬‬
‫‪0.0‬‬

‫‪32‬‬
‫‪64‬‬
‫‪32‬‬
‫‪64‬‬

‫‪Int‬‬
‫‪Long‬‬
‫‪Float‬‬
‫‪Double‬‬
‫جدول)‪(1‬‬

‫‪1.1‬أسماء المتحولت‪:‬‬
‫يجب اتباع القواعد التالية أثناء تسمية المتحولت‪:‬‬
‫‪‬يجب أن يبدأ بحرف )‪ (A-Z, a-z‬أو ‪ Unicode Character‬أو )_( أو )‪.($‬‬
‫‪‬يتبع الحرف الول تسلسل من الحرف أو الرقام أو ‪UnicodeCharacter‬‬
‫أو )_( أو )‪.($‬‬
‫‪‬يجب أن ل يكون السم كلمة محجوزة )‪ (const, goto‬أو كلمة مفتاحية‪.‬‬
‫أمثلة‪:‬‬
‫معرفات صالحة‬

‫‪2‬‬

‫;‪int \u0046x=8‬‬
‫;‪int _fd=7‬‬
‫;‪char $f‬‬
‫;‪boolean foo‬‬
‫;‪int bid3_4h‬‬

‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫معرفات غير صالحة‬

‫;‪float 3_node‬‬
‫;‪short !theCase‬‬

‫‪‬‬
‫‪‬‬

‫ملحظة‪:‬‬
‫جافا حساسة لحالة الحرف‪ ،‬أي أن ‪ radius‬و ‪ Radius‬هما متحولان مختلفان‪.‬‬
‫‪:Literals1.1‬‬
‫وهي عبارة عن قيمة تعطى لمتحججول‪ ،‬أي تظهججر فججي الطججرف اليمينججي للمسججاواة‪،‬‬
‫ويمكن أن تسند إلى متحول من أي نمط بسيط‪ ،‬كما هو آتي‪.‬‬
‫‪:Boolean Literals‬‬
‫وهي عبارة عن القيم المسموحة التي يمكججن نسججبها إلججى متحججول بوليججاني‪،‬‬
‫وهي عبارة عن ‪ false‬و ‪.true‬‬
‫‪boolean isBig=true.‬‬
‫;‪boolean isLittle=false‬‬

‫‪‬‬
‫‪‬‬

‫‪:Character Literals‬‬
‫وهي عبارة عن محرف وحيد أو ‪.Unicode Character‬‬

‫;'‪char c= 'w‬‬
‫;'‪char c1= '\u0019‬‬

‫‪‬‬
‫‪‬‬

‫‪:Integral Literals‬‬
‫وهي عبارة عن قيمججة تنسججب إلججى متحججول رقمججي‪ ،‬ويمكججن أن تكججون هججذه‬
‫القيمة ممثلة بالنظام العشري أو النظام الثماني أو النظام الست عشججري‪،‬‬
‫حيث النظام الفتراضي هو عبارة عن النظام العشري‪ ،‬ولتحديججد قيمججة أنهججا‬
‫ممثلة بالنظام الثماني نسبقها بالصفر )‪ ،(0‬أما لتحديد قيمة انها في النظام‬
‫الست عشري يجب أن تسبق بجج )‪ (0x‬أو )‪.(0X‬‬
‫مثال‪:‬‬
‫القيمة ‪ 28‬يمكن تمثيلها بست طرق‪:‬‬
‫‪28‬‬
‫‪034‬‬
‫‪0X1c‬‬
‫‪0X1C‬‬
‫‪0x1c‬‬
‫‪0x1C‬‬

‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫ملحظة‪:‬‬
‫‪‬يتم تمثيل ‪ integral Literals‬على ‪ 32‬بت‪ ،‬للتعامل معه على أنججه‬
‫‪ Z long Literals‬أي تمثيلها على ‪ 64‬بت‪ ،‬نضججيف اللحقججة )‪(l, L‬‬
‫إلى نهاية القيمة‪.‬‬
‫‪‬تتم ترجمة القيمججة الرقيمججة علججى أنهججا ‪ double‬أو ‪ ،float‬إذا ظهججر‬
‫في العبارة أي واحد مما يلي‪:‬‬
‫‪.1‬يحوي الفاصلة العشرية‪ ،‬مثل ‪.1.414‬‬
‫‪.2‬الحرف ‪ E‬أو ‪ ،e‬مثل ‪.4.23E+21‬‬
‫‪.3‬يحججوي اللحقججة ‪ F‬أو ‪ ،f‬بالتججالي تكججون القيمججة ‪ float‬مثججل‬
‫‪.1.82f‬‬
‫‪.4‬يحوي اللحقة ‪ D‬أو ‪ ،d‬مثل ‪.234d‬‬
‫ملحظة‪:‬‬
‫أي قيمة تم تمثيلها بالشكل السابق بدون اللحقججة ‪ d‬أو ‪ ،f‬يعتججبر‬
‫قيمة من نمط ‪.double‬‬
‫‪:String Literals‬‬
‫هي عبارة عن تتابع من الحرف‪ ،‬مثل‪:‬‬
‫;"‪String s="java Fundamentals‬‬

‫ملحظة‪:‬‬
‫‪‬يمكن أن تظهر ‪ Unicode Character‬ضمن أي مكان في ملف جافا‪.‬‬

‫‪3‬‬

‫مثال‪:‬‬

‫;'‪ch\u0061r a='a‬‬
‫;'‪char \u0062 ='b‬‬
‫;'‪char c='\u0063‬‬

‫‪‬فيما يلي بعض المحارف الخاصة‪:‬‬

‫‪‬‬
‫‪‬‬
‫‪‬‬

‫‪'\n': new Line‬‬
‫‪'\t' : tab‬‬
‫‪'\r': return‬‬
‫‪'\b': backspace‬‬
‫‪'\\': backslash‬‬
‫‪'\'' ': double quate‬‬
‫‪'\' ': single quate‬‬

‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫‪1.1‬مجال المتحولت‪:‬‬
‫هي عبارة عن المنطقة التي يمكن فيها استخدام المتحول‪.‬‬
‫يجب التمييز بين مجال المتحول وقابليجة الرؤيجة‪ ،‬حيجث قابليجة الرؤيجة تطبجق علجى‬
‫العضاء البيانيججة‪ ،‬وتحججدد هججل يمكججن اسججتخدام العضججو البيججاني خججارج الصججف الججذي‬
‫يحويها‪.‬‬
‫أنواع المتحولت حسب مجال المتحول‪:‬‬
‫‪.1‬متحول عضو ‪.Member Variable‬‬
‫‪.2‬متحول محلي ‪.Local Variable‬‬
‫‪.3‬وسيط لطريقة ‪.Method Parameter‬‬
‫‪.4‬وسيط معالجة استثناء ‪.Exception Handler Parameter‬‬
‫{‪Class MyClass‬‬
‫‪Member VariableDecleration‬‬
‫)‪Public void aMethod (Method Parameter‬‬
‫{‬
‫‪………….‬‬
‫‪Local Variable Parameters‬‬
‫‪……….‬‬
‫)‪Catch( Exception Handler Parameters‬‬
‫{‬
‫}‬
‫}‬
‫}‬

‫مجال العضاء البيانية‬
‫مجال وسطاء الطريقة‬

‫مجال المتحول المحلي‬
‫‪4‬‬

‫مجال وسيط معالجة‬
‫السثناء‬
‫)الشكل)‪1‬‬

‫بالنسبة للمتحول العضو‪:‬‬
‫‪‬يمكن أن يكون اسم العضو البياني بنفس اسم الصف‪.‬‬
‫‪‬يمكن استخدامه ورؤيته في أي مكان في الصف‪.‬‬
‫‪‬يتم تهيئته )إعطاؤه قيمة ابتدائية( بشكل أوتوماتيكي قبل استدعاء أي باني‪.‬‬
‫بالنسبة للمتحولت المحلية‪:‬‬
‫‪‬يمكن أن يكون له نفس اسم عضو بياني‪.‬‬
‫‪‬يجب تهيئته )إعطاؤه قيمة ابتدائية( بشكل صريح قبل استخدامه في أي‬
‫عبارة وإل سيعترض المترجم )خطأ أثناء الترجمة(‪.‬‬
‫‪‬إذا كان المتحول هو عبارة عن مرجع‪ ،‬نعطيه ‪ null‬كقيمة ابتدائية‪.‬‬
‫مثال‪:‬‬

‫)‪public String aMethod(int a‬‬
‫{‬
‫;‪String tmp‬‬
‫خطأ أثناء الترجمة‪ ،‬بيبن أنه يجب إعطاء‬
‫)‪if(a >0‬‬
‫المتحول ‪ tmp‬قيمة ابتدائية‬
‫;"‪return "Postive‬‬
‫;‪return tmp‬‬
‫}‬

‫‪1.1‬الثوابت )المتحولت النهائية(‪:‬‬
‫يمكن التصججريح عججن المتحججول بحيججث تصججبح قيمتججه ثابتججة )أي غيججر قابججل للتعججديل(‬
‫باستخدام الكلمة المفتاحية ‪ ،final‬كما هو موضح‪:‬‬
‫;‪final int x=10‬‬
‫;‪final int y‬‬
‫;‪y=30‬‬

‫‪‬‬
‫‪‬‬

‫حيث ل يمكن تغير قيمة المتحول ‪ x‬أو ‪ y‬بعد الن وإل سيعترض المترجم‪.‬‬
‫خطأ أثناء الترجمة‬
‫ل يمكن تغير قيمة الثابت بعد‬
‫إعطاؤه القيمة‬

‫;‪final int y=10‬‬
‫;‪y=30‬‬

‫‪-1‬العمليات ‪:Operators‬‬
‫توفر جافا العديد من العمليات‪ ،‬وهي‪:‬‬
‫‪-1‬العمليات الحادية ‪:Unary Operator‬‬
‫‪-1‬معاملت الزيادة والنقصان)‪:(++, --‬‬
‫‪ :op++‬زيادة المعامل )‪ (op‬بمقدار واحد ومن ثم تقييمه‪.‬‬
‫‪ :++op‬تقييم المعامل)‪ (op‬ومن ثم زيادة قيمته بمقدار )‪.(1‬‬
‫‪ :op--‬تقييم المعامل )‪ (op‬من بعد إنقاص قيمته بمقدار واحد‪.‬‬
‫‪ :--op‬تقييم المعامل )‪ (op‬ومن ثم إنقاص قيمته بمقدار واحد‪.‬‬
‫مثال‪:‬‬

‫‪5‬‬

‫;‪x=5; y=0‬‬
‫;‪y=x++‬‬

‫فتكون النتيجة )‪.(x=6, y=5‬‬

‫;‪x=5; y=0‬‬
‫;‪y=++x‬‬

‫فتكون النتيجة )‪.(x=6, y=6‬‬
‫‪-1‬معاملت)‪:(+)(-‬‬
‫‪ :+-1‬ليس لها أي تأثير‪.‬‬
‫‪:--2‬‬
‫‪-1‬النفي)!(‪:‬‬
‫تعكس قيمة متحول بولياني‪.‬‬
‫‪-2‬المتمم)~(‪:‬‬
‫تعكس بتات تعبير رقمي )‪ 0‬يصبح ‪ ،1‬ج ‪ 1‬يصبح ‪ ،(0‬ويطبق فقط علججى النمججاط‬
‫الصحيحة‪.‬‬
‫‪-3‬التحويل القصري)(‪:‬‬
‫لتحويل نمط بيانات معامل إلى آخر بشكل صريح‪ ،‬كما في المثال التالي‪:‬‬

‫;‪byte x = 1‬‬
‫;‪byte y = 2‬‬
‫;‪byte z = x/y‬‬

‫ينتج خطأ أثناء الترجمة عند السطر الثججالث حسججب ‪arithmetic promotion‬‬
‫)المشروحة لحقًا(‪ ،‬لنه نمط بيانات الطرف اليميني هججو ‪ ،int‬ول يمكججن نسججب‬
‫قيمة من نمججط ‪ int‬إلججى متحججول مججن نمججط ‪ ،byte‬لججذلك يجججب قصججر الطججرف‬
‫اليساري إلى ‪ ،byte‬أي على الشكل‪:‬‬
‫;‪byte x = 1‬‬
‫;‪byte y = 2‬‬
‫;)‪byte z = (byte) (x/y‬‬

‫‪-1‬العمليات الحسابية ‪:Arithmetic Operator‬‬
‫وهي ‪.* ,- ,/ ,% ,+‬‬
‫كل النماط الحقيقية‪.‬‬
‫تطبيقها على‬
‫‪-1‬يمكن‬
‫‪arithmetic‬‬
‫‪addition‬‬
‫‪-2‬يمكن استخدام )‪ (+‬لجمع السلسل‪.‬‬
‫مثال‪:‬‬

‫;)"‪System.out.println(1+2+"3‬‬

‫تطبع ‪.33‬‬

‫;)‪System.out.println("1"+2+3‬‬

‫تطبع ‪.123‬‬

‫‪string concatenation‬‬

‫‪-3‬قسججمة عججدد صججحيح علججى )‪ (0‬يرمججي اسججتثناء ‪،ArithmeticException‬‬
‫بينما يعطي قسمة عدد حقيقي على صفر النهاية)‪ ∞-‬أو ‪.(∞+‬‬
‫‪-4‬تستخدم العملية )‪ (%‬للحصججول علججى بججاقي القسججمة‪ ،‬تكججون إشججارة ناتججج‬
‫العملية )‪ (%‬حسب إشججارة المعامججل الول لهججذه العمليججة‪ ،‬وعنججد حسججاب‬
‫بجججاقي قسجججمة عجججدد صجججحيح علجججى الصجججفر يتجججم رمجججي اسجججتثناء )‬
‫‪ ،(ArithmeticException‬أما باقي قسمة عدد حقيقي على الصفر هججي‬
‫اللنهاية‪.‬‬
‫مثال‪:‬‬
‫يطبع ‪2‬‬
‫يطبع ‪2‬‬

‫‪6‬‬

‫;‪int z=11%3‬‬
‫;)‪System.out.println(z‬‬

‫‪‬‬

‫;)‪z=11%(-3‬‬
‫;)‪System.out.println(z‬‬

‫‪‬‬

‫يطبع ‪2-‬‬

‫يطبع ‪2-‬‬

‫;‪z=-11%3‬‬
‫;)‪System.out.println(z‬‬

‫‪‬‬

‫;)‪z=-11%(-3‬‬
‫;)‪System.out.println(z‬‬

‫‪‬‬

‫تحوي كل من الصفين ‪ Float, Double‬الصفين المغلفين للنماط البسيطة ‪float,‬‬
‫‪ double‬على ثابتين‪ ،‬الثابت الول يمثل اللنهاية)‪،(Infinity‬فيمكن أن تكون نتيجججة‬
‫العمليات الحسابية على المعاملت الحقيقية غير محددة أي اللنهاية )مثل القسججمة‬
‫على صفر(‪ ،‬أما الثابت الثججاني )‪(NaN‬فيمثججل القيمجة الغيججر موجججودة‪ ،‬فيمكجن أن ل‬
‫يكون هناك بالصل نتيجة للعملية الحسابية )مثل الجذر التربيعي لعدد سالب(‪،‬‬
‫من أجل مقارنة قيمة مع الثابت)‪ (NaN‬نستخدم الصيغة التالية‪:‬‬
‫;)‪Float.IsNaN(x‬‬

‫ول نستخدم )‪.(x==Float.NaN‬‬
‫أما من أجل مقارنة قيمة مع الثابت)( نستخدم الصيغة التالية‪:‬‬

‫‪x==Double.POSITIVE_INFINITY‬‬

‫ملحظة‪:‬‬
‫عندما يكون نمط البيانات لمعاملي العمليججة الثنائيججة مختلفيججن أو مججن نمججط بيانججات‬
‫أصغر حجمأ من )‪ (int‬أي )‪ ،(int. char, byte, short‬عنجدها سججيحول المججترجم‬
‫نمط البيانات لحد المعاملين إلى نمججط بيانججات المعامججل الخججر أو سججيقوم بتحويججل‬
‫نمط البيانات للمعاملين إلى نمط آخر مختلف‪ ،‬كما هو موضح فيما يلي‪:‬‬
‫‪‬إذا كان نمط بيانات المعاملين أصغر من النمججط ‪ ،int‬عنججدها سججيتم تحويججل كل المعججاملين‬
‫إلى ‪.int‬‬
‫‪‬إذا كان نمط بيانات أحد المعاملين على القل ‪ ،double‬ستم تحويل المعامججل الخججر إلججى‬
‫‪.double‬‬
‫ً‬
‫‪‬إذا كان نمط بيانات أحد المعاملين على القل ‪ ،float‬إضافة إل أنه ليججس أي جا منهمججا مججن‬
‫نمط ‪ ،double‬عندها سيتم تحويل المعامل الخر إلى ‪.float‬‬
‫ً‬
‫‪‬إذا كان نمط بيانات أحد المعاملين على القل ‪ ،long‬إضافة إل أنه ليججس أي جا منهمججا مججن‬
‫نمط )‪ ،(float ,double‬عندها سيتم تحويل المعامل الخر إلى ‪.long‬‬
‫وهذا ما يسمى بجج ‪.Arithmetic Promotion‬‬
‫مثال‪:‬‬
‫;‪byte b = 5‬‬
‫;‪int i = 3‬‬
‫;‪double d = b / i‬‬
‫;)‪System.out.println(d‬‬

‫هنا في السطر الثالث سيتم أول ً تحويل )‪ (b‬إلى ‪ ،int‬ومن ثججم تنفججذ العمليججة‬
‫الحسابية )‪ (b/i‬وينتج واحد )‪ (1‬من نمط ‪ ،int‬أخيرا ً يتم تحويججل النتيجججة إلججى‬
‫نمط ‪ ،double‬لذلك يطبع السطر الخير القيمة )‪.(1.0‬‬

‫‪-1‬عمليات الزاحة ‪: Shift Operator‬‬

‫‪ <<-1‬إزاحة إلى اليسار‪:‬‬
‫‪ : op1 << op2‬إزاحة بتات ‪ op1‬إلى اليسار بمقدار ‪)op2‬تحذف(‪ ،‬ويتم‬
‫إضافة أصفار إلى اليمين‪ ،‬ويتم الحتفاظ ببت الكثر أهمية‪ ،‬وتصبح القيمججة‬
‫الجديدة كما يلي‪:‬‬
‫‪New_Value=Old_Value * 2^x‬‬

‫حيث )‪ (x‬هو البتات التي أزيحت‪.‬‬
‫هذه البتات التي تمت‬
‫إزاحتها وحذفها‬

‫‪7‬‬

‫‪1‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1 a0‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1a<<3‬‬
‫‪0 1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪0‬‬

‫هذه الصفار التي تمت‬
‫إضافتها‬

‫‪ >>-2‬إزاحة إلى اليمين مع أخذ الشارة بعين العتبار‪.‬‬
‫‪ :op1 >> op2‬إزاحة يتات ‪ op1‬إلى اليمين بمقدار ‪ ،op2‬عنججد إجججراء‬
‫عملية الزاحة مع أخججذ الشججارة بعيججن العتبججار تأخججذ البتججات الداخلججة مججن‬
‫اليسار قيمة البت اليسارية‪.‬‬
‫هذه البتات التي تمت‬
‫إزاحتها وحذفها‬

‫‪1‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1 a0‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1a>>>3‬‬
‫‪1 1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫هذه الصفار التي تمت‬
‫إضافتها‬

‫تصبح القيمة‪:‬‬

‫‪New_Value=old_Value/2^x‬‬

‫حيث )‪ (x‬هي عدد البتات التي تم إزاحتها‪.‬‬
‫‪ >>>-3‬إزاحة إلى اليمين بدون أخذ الشارة‪:‬‬
‫‪ :Op1 >>> op2‬إزاحة بتات ‪ op1‬إلى اليمين بمقدار ‪ op2‬بدون إشارة‬
‫حيث تأخذ البتات الداخلة من اليسار قيمة الصفر‪.‬‬
‫هذه البتات التي تمت‬
‫إزاحتها وحذفها‬

‫‪1‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1a 0‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪1‬‬

‫‪1‬‬

‫‪1a>>3‬‬
‫‪1 1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪1‬‬

‫‪1‬‬

‫‪0‬‬

‫‪0‬‬

‫‪1‬‬

‫يغير هذا المعامل إشارة العدد السالب إلى عدد موجب‪.‬‬

‫‪-2‬عمليات المقارنة ‪:Compression Operator‬‬
‫تعيد كل عميات المقارنة قيمة منطقية‪ ،‬ويوجد في جافا العديد من عمليات‬
‫المقارنة وهي‪:‬‬
‫‪ :< ,=< ,=> ,>-1‬وتطبق فقط على النماط الرقمية‪.‬‬
‫‪ :istanceof-2‬وتستخدم لمعرفة الصف الذي ينتمي إليه غججرض معيججن‪ ،‬أي‬
‫يجب أن يكون المعامل اليساري هو مرجع واليميني هو عبججارة عججن صججف‬
‫أو واجهة أو نمط مصفوفة‪.‬‬
‫تعيد ‪ instanceof‬القيمة ‪ true‬في الحالت التالي‪:‬‬

‫‪8‬‬

‫إذا كان المعامججل اليسججاري هججو غججرض مججن الصججف الموجججود فججي‬
.‫الطرف اليميني أو من صف ابن له‬
‫إذا كججان الصججف الججذي أنشججأ مججن الغججرض الموجججود فججي الطججرف‬
.‫اليساري يحقق الواجهة الموجودة في الطرف اليمني‬
‫إذا كان الطرف اليساري هو مرجججع مصججفوفة والطججرف اليسججاري‬
.‫نمط مصفوفة‬
:‫مثال‬

class TestInstanceOF {
public static void main(String args[])
{
A a = new A();
B b = new B();
if (b instanceof X)
System.out.println(true);
else
System.out.println(false);
if (b instanceof B)
System.out.println(true);
else
System.out.println(false);
if (b instanceof A)
System.out.println(true);
else
System.out.println(false);
if (a instanceof A)
System.out.println(true);
else
System.out.println(false);
if (a instanceof X)
System.out.println(true);
else
System.out.println(false);
}
}
interface X {}
class A implements X {}
class B extends A {}

:‫ملحظة‬
‫( غيجججر مقبولجججة مجججن‬x instanceof Y) ‫إذا كجججانت العبجججارة‬
‫( غيججر‬Y y=(Y) x ) ‫ عندها العبججارة‬،(‫المترجم)خطأ أثناء الترجمة‬
.‫مسموحة من قبل المترجم‬
‫( مقبولججة مججن قبججل‬x instanceof Y) ‫ أمججا إذا كججانت العبججارة‬
‫( صحيحة‬Y y=(Y) x )) ‫ عندها العبارة‬،false ‫المترجم ولكن تعيد‬
.‫ أثناء التنفيذ‬ClassCastException ‫ولكن ترمي استثناء‬

9

‫‪‬إذا كانت العبارة )‪ (x instanceof y‬صحيحة وتعيد ‪ ،true‬عندها‬
‫العبارة )) ‪ (Y y=(Y) x‬صحيحة‪.‬‬
‫‪:=! ,==-1‬‬
‫‪-1‬يستخدم مع النماط البسيطة‪.‬‬
‫‪-2‬ل يمكن استخدامها مع الغراض وإنما نستخدم الطريقججة )‪(equals‬‬
‫بعد إعادة تحقيقها كما تريد في الصفوف المناسبة‪.‬‬
‫‪-3‬يمكن استخدام )==( لمقارنة ‪.String Literals‬‬

‫‪-2‬العمليات الثنائية ‪:Bit wise Operation‬‬

‫وهي &‪ ،| ,^ ,‬وتطبق على المعاملت المنطقية والصحيحة)‪byte, short, char,‬‬
‫‪.(int, long‬‬
‫‪Boolean‬‬
‫‪Literals‬‬
‫‪True‬‬
‫‪false‬‬

‫القيمة‬
‫‪1‬‬
‫‪0‬‬

‫يوضح الجدول )‪ (3‬نتيجة عملية ‪:and‬‬
‫& ‪Op1‬‬
‫‪Op2‬‬
‫‪Op1‬‬
‫‪Op2‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫الجدول)‪(3‬‬

‫يوضح الجدول )‪ (4‬نتيجة عملية ‪:OR‬‬
‫‪Op1 | Op2‬‬
‫‪Op2‬‬
‫‪Op1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫جدول)‪(4‬‬

‫يوضح الجدول )‪ (5‬نتيجة عملية ‪:XOR‬‬
‫‪Op1 | Op2‬‬
‫‪Op2‬‬
‫‪Op1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫جدول)‪(5‬‬

‫مثال‪:‬‬

‫{ ‪class TestLogical‬‬
‫{ )][‪public static void main(String args‬‬
‫;‪byte x = 117‬‬
‫;‪byte y = 89‬‬
‫;)‪byte z = (byte) (x & y‬‬
‫;)‪byte l = (byte) (x | y‬‬
‫;)‪byte m = (byte) (x ^ y‬‬

‫‪10‬‬

‫;))‪System.out.println(x + " " + Long.toBinaryString(x‬‬
‫;))‪System.out.println(y + " " + Long.toBinaryString(y‬‬
‫;))‪System.out.println(z + " " + Long.toBinaryString(z‬‬
‫;))‪System.out.println(l + " " + Long.toBinaryString(l‬‬
‫;))‪System.out.println(m + " " + Long.toBinaryString(m‬‬
‫}‬
‫}‬

‫‪-3‬العمليات المنطقية)الشرطية(‪: Logical Operator‬‬
‫وهي ||‪.&& ,‬‬
‫‪-1‬تطبق فقط على المعاملت المنطقية‪.‬‬
‫‪-2‬تسمى هذه العمليات ‪ ،Short-Circuit‬لنه في بعض الحالت ل يتججم‬
‫تفييم المعامل الثاني‪ ،‬كما هو موضح فيما يلي‪:‬‬
‫‪op1 || op2‬‬

‫تكون النتيجة النهائية للتعبير هي ‪ true‬في حال كانت قيمة أحد المعاملين‬
‫على القل هي ‪،true‬ج فإذا كانت نتيجة تقييجم المعامجل الول )‪ (op1‬هججي‬
‫‪ ،true‬فججإن النتيجججة النهائيججة للعبججارة هججي ‪ true‬بغججض النظججر عججن قيمججة‬
‫المعامل الثاني‪ ،‬لذلك ل يقيم المعامل الثاني‪ ،‬أمججا إذا كججانت نتيجججة تقييججم‬
‫المعامل الول هي ‪ false‬فيجب تقييم المعامل الثاني‪.‬‬
‫‪op1 && op2‬‬

‫تكججون النتيجججة النهائيججة للتعججبير هججي ‪ false‬فججي حججال كججانت قيمججة أحججد‬
‫المعاملين على القل هي ‪ ،false‬فإذا كانت نتيجة تقييججم المعامججل الول )‬
‫‪ (op1‬هي ‪ ،false‬فإن النتيجة النهائية للعبارة هي ‪ false‬بغض النظر عججن‬
‫قيمة المعامل الثاني‪ ،‬لذلك ل يقيم المعامججل الثججاني‪ ،‬أمججا إذا كججانت نتيجججة‬
‫تقييم المعامل الول هي ‪ true‬فيجب تقييم المعامل الثاني‪.‬‬

‫‪-4‬الشكل المختصر لج ‪:(if (Ternary Operator‬‬
‫الشكل العام‪:‬‬

‫‪a= x? b:c‬‬
‫‪-1‬يجب أن يكون المعامل )‪ (x‬هي معامل منطقي‪.‬‬
‫‪-2‬يتم نسب قيمة )‪ (b‬إلى المعامل )‪ (a‬إذا كانت قيمة المعامل ) ‪ x) true‬وإل يتم‬
‫نسب قيمة )‪ (c‬إلى )‪.(a‬‬
‫‪-3‬ل يتم تقييم )‪ (b, c‬معًا‪ ،‬واحد منهما فقط ستم تقييمه‪.‬‬

‫‪-1‬عمليات السناد ‪:Assignment Operation‬‬
‫يوضح الجدول )‪ (6‬عمليات السناد‪:‬‬
‫الستخدام‬
‫التقييم‬
‫‪op1+=op2‬‬
‫‪op1=op1+op2‬‬
‫‪op1-=op2‬‬
‫‪op1=op1-op2‬‬
‫‪op1*=op2‬‬
‫‪op1=op1*op2‬‬
‫‪op1/=op2‬‬
‫‪op1=op1/op2‬‬
‫‪op1%=op2‬‬
‫‪op1=op1%op2‬‬
‫‪op1|=op2‬‬
‫‪op1=op1|op2‬‬
‫‪op1&=op2‬‬
‫‪op1=op1&op2‬‬
‫‪op1^=op2‬‬
‫‪op1=op1^op2‬‬
‫‪op1<<=op2‬‬
‫‪op1=op1<<op2‬‬
‫‪op1>>=op2‬‬
‫‪op1=op1>>op2‬‬
‫‪op1>>>=op2‬‬
‫‪op1=op1>>>op2‬‬
‫جدول)‪(6‬‬

‫‪11‬‬

‫العملية‬
‫=‪+‬‬
‫=‬‫*=‬
‫‪=/‬‬
‫‪=%‬‬
‫|=‬
‫&=‬
‫^=‬
‫>>=‬
‫<<=‬
‫<<<=‬

‫ فجإن العمليجة )=( هجي عبجارة عجن عمليجة‬،‫بالضافة إلى عمليات السجناد السجابقة‬
:‫ كما هو موضح فيما يلي‬،‫إسناد ولها قيمة‬
a=b=c=0
‫ وتصبح العبجارة علجى الشجكل‬،(0) ‫( ويصبح قيمة المساواة هي‬c=0) ‫أول يتم تنفيذ‬
‫( وتنسججب‬0) ‫( وتصبح قيمججة المسججاواة‬b=0) ‫ ومن ثم يتم تنفيذ‬،(a=b=0) ‫التالي‬
.(a)‫إلى المعامل‬
:‫ملحظة‬
:‫إذا كان لدينا المثال التالي‬
byte b=10;
//b=b+10;
b+=10;

‫( لذلك‬int ‫ يتم تقييمها ك‬10 ‫خطأ أثناء الترجمة )القيمة‬
‫( بشكل صريح‬byte) ‫يجب قصرها إلى‬

‫ لن عمليجات السجناد‬،‫أما السطر الول والسطر الثاني يتم ترجمتها بشجكل صجحيح‬
.(byte) ‫( إلى النمط‬int) ‫=( تسبب قصر ضمني من النمط‬+ ,= ‫)وهنا‬
:‫مثال‬

class PackingCharacters {
public static void main(String[] args) {
char letterA = 'A';
char letterB = 'B';
char letterC = 'C';
char letterD = 'D';
long packed = 0L;
packed = letterD;
packed = (packed << 16) | letterC;
packed = (packed << 16) | letterB;
packed = (packed << 16) | letterA;
long mask = 0xFFFF;
char letter = (char) (packed & mask);
System.out.println("From right to left the letters in packed are:");
System.out.println(" " + letter + Long.toBinaryString(letter));
packed >>= 16; // Shift out the rightmost letter
letter = (char) (packed & mask);
System.out.println(" " + letter + Long.toBinaryString(letter));
packed >>= 16;
letter = (char) (packed & mask);
System.out.println(" " + letter + Long.toBinaryString(letter));
packed >>= 16;
letter = (char) (packed & mask);
System.out.println(" " + letter + Long.toBinaryString(letter));
}
}
‫العملية‬
(postfix)-- ,++
! ,~ ,- ,+ ,-- ,++
(new, (type)(object creation, cast
% ,/ ,*
- ,+
<<< ,>> ,<<
instanceof ,=< ,< ,=> ,>
=! ,==
&

‫التقييم‬
‫اليسار إلى اليمين‬
‫اليمين إلى اليسار‬
‫اليمين إلى اليسار‬
‫اليسار إلى اليمين‬
‫اليسار إلى اليمين‬
‫اليسار إلى اليمين‬
‫اليسار إلى اليمين‬
‫اليسار إلى اليمين‬
‫اليسار إلى اليمين‬

12

‫من‬
‫من‬
‫من‬
‫من‬
‫من‬
‫من‬
‫من‬
‫من‬
‫من‬

‫من‬
‫من‬
‫من‬
‫من‬
‫من‬
‫من‬

‫اليسار إلى اليمين‬
‫اليسار إلى اليمين‬
‫اليسار إلى اليمين‬
‫اليسار إلى اليمين‬
‫اليمين إلى اليسار‬
‫اليمين إلى اليسار‬

‫^‬
‫|‬
‫&&‬
‫||‬
‫?‪:‬‬
‫=‪,=<< ,=>> ,=& ,=^ ,=| ,=/ ,=* ,=- ,=+ ,‬‬
‫<<<=‬

‫مثال‪:‬‬

‫{ ‪class Precedence‬‬
‫{ )][‪public static void main(String args‬‬
‫;‪int i = 0‬‬
‫يطبع )‪ (0‬لن العملية )=( لها‬
‫;‪i = i++‬‬
‫الولوية القل‬
‫;‪i = i++‬‬
‫;‪i = i++‬‬
‫;)‪System.out.println(i‬‬
‫;]‪int array[] = new int[5‬‬
‫;‪int index = 0‬‬
‫;‪array[index] = index = 3‬‬
‫يأخذ العنصر الول القيمة )‪(3‬‬
‫)‪for (int c = 0; c < array.length; i++‬‬
‫وليس العنصر الرابع‬
‫;)]‪System.out.println(array[c‬‬
‫;)‪System.out.println("index: " + index‬‬
‫يطبع )‪(3‬‬
‫}‬
‫}‬

‫ملحظة‪:‬‬
‫عند نسب قيمة إلجى متحججول‪ ،‬يتججم أول ً فحججص مججال نمججط بيانجات القيمجة الموجججودة فجي‬
‫الطرف اليساري إذا كانت مقبولة أو ل )من قبل المترجم(‪.‬‬

‫;‪char c=3‬‬

‫لن ‪ numeric Literals‬هي افتراضيا ً قيمة صحيحة‬

‫;‪int a=3‬‬
‫;‪char d=a‬‬

‫خطأ أثنججاء الترجمجة عنججد السجطر الثججاني‪ ،‬لن مجججال نمجط البيانجات )‪ (int‬أكججبر مجن نمججط‬
‫البيانات )‪.(char‬‬

‫;‪char e=-1‬‬

‫خطأ اثنججاء الترجمججة لن القيمججة ل تنتمججي إلججى مجججال نمججط البيانججات )‪ ،(char‬حيججث نمججط‬
‫البيانات )‪ (char‬هو نمط صحيح بدون إشارة‪.‬‬

‫;‪float f=1.3‬‬

‫خطأ أثناء الترجمة‪ ،‬لن القيمة )‪ (1.3‬يتم ترجمتها على أنها ‪.double‬‬
‫العبارة صحيحة‪ ،‬لن القيمة )‪ (1/3‬هي من نمط ‪.int‬‬

‫;‪float f1=1/3‬‬

‫;‪float f2=1.0/3.0‬‬

‫خطأ أثناء الترجمة‪ ،‬لن الطرف اليميني يتم تقييمه كج ‪.double‬‬
‫عند نسب متحول نهائي إلى متحول‪ ،‬إذا كان نمط بيانات المتحول النهائي أوسع من نمججط‬
‫بيانات المتحول وكانت قيمة المتحول النهائي ضججمن مجججال نمججط بيانججات المتحججول عنججدها‬
‫سيتم تحويل ضمني للمتحول النهائي‪:‬‬
‫;‪byte b‬‬
‫;‪final int a=10‬‬
‫;‪b=a‬‬

‫العبارة صحيحة‪ ،‬لن قيمة ‪ a‬محددة وضمن مجال نمط البيانات ‪.byte‬‬

‫‪13‬‬

‫;‪final int x=a‬‬
‫;‪b=x‬‬

‫العبارة صحيحة‪.‬‬

‫;‪int y‬‬
‫;‪final int z=y‬‬
‫;‪b=z‬‬

‫خطأ أثناء الترجمة عند السطر الثاني والثالي‪ ،‬لنه لم يتم تحديد قيمة المتحول ‪.y‬‬

‫‪-1‬بنى التحكم‪:‬‬
‫‪-2‬المصفوفات‪:‬‬

‫‪4.1‬ما هي المصفوفة‪:‬‬
‫ً‬
‫ً‬
‫هي بنية يمكن أن تحتوي على عددا ثابتا من عناصجر ذات نمجط بيانجات واحجد‪ ،‬وقجد‬
‫تكون هذه العناصر إما من نمط بسيط أو مراجع‪ ،‬ويمكن الوصول إلججى كججل عنصججر‬
‫بواسطة دليل يمثل موقع العنص في المصفوفة‪ ،‬وتعتبر المصفوفة غرضا ً حتى ولججو‬
‫كانت محتوياتها من نمط بسيط‪.‬‬
‫‪4.2‬إنشاء المصفوفة‪:‬‬
‫من أجل إنشاء مصفوفة لبد من التصريح عنها أو ً‬
‫ل‪ ،‬أي‪:‬‬
‫‪-1‬التصريح عن مصفوفة‪:‬‬
‫الشكل العام للتصريح عن متحول من نمط مصفوفة‪:‬‬
‫;‪Data_Type[] arr_Name‬‬
‫;][‪Data_Type arr_Name‬‬

‫مثال‪:‬‬
‫;‪s‬‬

‫;‪int[] a‬‬
‫][‪String‬‬

‫في هذه المرحلة ل يتم تحديد عدد عناصر المصفوفة )طول المصفوفة(‪.‬‬
‫‪-2‬حجز مكان للمصوفة في الذاكرة‪:‬‬
‫يتم إنشاء المصفوفة باستخدام المعامل ‪ new‬على الشكل التالي‪:‬‬

‫;]‪arr_Name=new Data_Type[size‬‬

‫أي‪:‬‬
‫مثال)‪:(1‬‬

‫;]‪a= new int[3‬‬
‫;]‪s=new String[3‬‬
‫{ ‪class TestArray‬‬
‫)][‪public static void main(String args‬‬
‫{‬
‫;‪int[] y‬‬
‫;]‪y=new int[5‬‬
‫;)]‪System.out.println(y[4‬‬
‫}‬
‫}‬

‫لم نسند أي قيمة بدائية للعنصر الرابع ‪ [y[4‬صراحة‪ ،‬مججع ذلججك ل تججؤدي ترجمججة‬
‫البرنامج السابق إلى أي خطأ ويطبع القيمة )‪.(0‬‬
‫مثال)‪:(2‬‬

‫{ ‪class TestObjectArray‬‬
‫)][‪public static void main(String args‬‬
‫{‬
‫;]‪String[] x=new String[3‬‬
‫;)]‪System.out.println(x[2‬‬
‫}‬
‫}‬

‫‪14‬‬

‫يترجم البرنامج السبابق بدون أخطاء ويطبع القيمة )‪.(null‬‬
‫أي‪:‬‬
‫ً‬
‫تقوم جافا تلقائيا بإسناد قيم ابتدائية لعناصر المصفوفة‪ ،‬حيث تستخدم القيمة )‬
‫‪ (0‬لعناصر المصججفوفة مججن النمججط الصججحيح بينمججا تسججتخدم القيمججة )‪ (0.0‬مججع‬
‫عناصر المصفوفة مججن النمججط الحقيقججي والقيمججة )‪ (false‬مججع المصججفوفة مججن‬
‫النمط البولياني والقيمة )‪ (null‬مع الغراض‪.‬‬
‫‪s‬‬

‫‪-1‬مصفوفة الغراض‪:‬‬
‫‪s‬‬

‫;]‪s=new String[3‬‬
‫‪WelCome‬‬
‫‪Java‬‬
‫‪To‬‬

‫;"‪s[0]="WelCome‬‬
‫;"‪s[1]="to‬‬
‫;"‪s[2]="Java‬‬

‫‪s‬‬

‫‪a‬‬
‫;][‪int a‬‬

‫‪-2‬مصفوفة النمط البسيط‪:‬‬
‫‪a‬‬

‫‪2‬‬

‫;]‪a= new int[3‬‬
‫‪a‬‬
‫)‪for(int i=0; i<a.length; a[i++]=2‬‬
‫;‬

‫ملحظات‪:‬‬

‫‪15‬‬

‫‪‬يمكن اختصار خطوات التصريح وإنشاء المصفوفة وإعطججاء القيججم البتدائيججة‬
‫بخطوة واحدة على الشكل التالي‪:‬‬
‫;}‪int a[]= {2, 5, 6‬‬
‫;}‪int a[]= new int[]{2, 5, 6‬‬
‫ل نحدد طول المصفوفة بعد المعامل ‪.new‬‬
‫‪‬نستخدم ‪ length‬للحصول على طول المصفوفة‪.‬‬
‫‪‬يمكن أن نضع القواس المربعة ][ بعد نمججط البيانججات أو بعججد أو قبججل اسججم‬
‫المصفوفة‪.‬‬
‫‪‬بعد التصريح وحجز مكجان لمصجفوفة )سججواًء كجانت عضججو بيجاني أو متحججول‬
‫محلي(‪ ،‬فإن جافا ستقوم بتهيئة عناصر المصفوفة بشكل أوتوماتيكي وذلججك‬
‫بإعطائها القيمة الفتراضية للنمط المقابل )كما ذكر سابقًا(‪.‬‬
‫‪‬إذا تم فقط التصججريح عججن مصججفوفة )ولججم يحجججز مكججان لهججا فججي الججذاكرة(‬
‫وكانت المصفوفة هي عبارة عن عضو بياني في الصججف فسججيأخذ المتحججول‬
‫المعججبر عججن المصججفوفة القيمججة ‪ ،null‬بينمججا ل تعطججى المصججفوفة المحليججة‬
‫القيمة ‪ ،null‬كما هو موضح في المثال التالي‪:‬‬

‫{ ‪class TestInitValue‬‬
‫;][‪static int a‬‬
‫{ = ][‪static int b‬‬
‫;}‪1, 2, 4‬‬
‫{ )][‪public static void main(String args‬‬
‫خطأ أثناء التنفيذ‬
‫;)]‪//System.out.print(a[0‬‬
‫‪NullPointerException‬‬
‫;)‪System.out.println(b‬‬
‫;)]‪System.out.println(b[2‬‬
‫تطبع ‪null‬‬
‫;)‪System.out.println(a‬‬
‫;][‪int c‬‬
‫;)‪//System.out.println(c‬‬
‫خطأ أثناء الترجمة يبين أنه يجب إعطاء‬
‫}‬
‫المتحول قيمة ابتدائية‬
‫}‬

‫مثال)‪:(3‬‬
‫ترتيب مصفوفة تصاعديا‪ً:‬‬

‫{‪Class SortArray‬‬
‫{ )][‪public static void main(String args‬‬
‫;}"‪String s[] = {"Dalia", "Alsaleh", "Advanced", "programming‬‬
‫;‪String tmp‬‬
‫)‪for (int i = 0; i < s.length; i++‬‬
‫)‪for (int j = 0; j < s.length - i - 1; j++‬‬
‫{ )‪if (s[j].compareTo(s[j + 1]) > 0‬‬
‫;]‪tmp = s[j‬‬
‫;]‪s[j] = s[j + 1‬‬
‫;‪s[j + 1] = tmp‬‬
‫}‬
‫)‪for (int i = 0; i < s.length; i++‬‬
‫;)]‪System.out.println(s[i‬‬
‫}‬
‫}‬

‫مثال)‪:(4‬‬
‫البحث عن عنصر ضمن مصفوفة‪:‬‬

‫{‪Class SearchArray‬‬
‫{ )][‪public static void main(String args‬‬
‫;}"‪String s[] = {"Dalia", "Alsaleh", "Advanced", "programming‬‬

‫‪16‬‬

‫)‪for (int j = 0; j < s.length ; j++‬‬
‫{ )‪if (s[j].compareTo(s[j + 1]) == 0‬‬
‫;)]‪System.out.println(s[j‬‬
‫;‪break‬‬
‫}‬
‫}‬
‫}‬

‫‪4.1‬مصفوفة المصفوفات‪:‬‬
‫هي عبارة عن مصفوفة كل عنصر فيها عبارة عن مصفوفة أيضا‪ً.‬‬
‫أمثلة‪:‬‬
‫‪-1‬إذا كان لدينا ثلثة طلب يخضعون لمتحانات في نهاية كل أسبوع‪ ،‬بالتالي يكون‬
‫علماتهم في نهاية الشهر ممثلة على الشكل التالي‪:‬‬
‫;} }‪int[][] grade={{99,42,74,85} , {90,30,40,60} ,{91,83,60,70‬‬
‫‪-2‬يمكن استعمال المعامل ‪ new‬لحجز مكان فججي للمصججفوفة فججي الججذاكرة علججى‬

‫الشكل التالي‪:‬‬

‫;]‪int[][] x=new int[2][3‬‬
‫)‪for(int i=0;i<x.length;i++‬‬
‫‪x‬‬

‫‪4‬‬
‫‪4‬‬

‫)‪for(int j=0;j<x[i].length;j++‬‬
‫;‪x[i][j]=4‬‬

‫‪ :x.length‬للحصول على عدد السطر ‪.‬‬
‫‪ :x[i].length‬للحصول على عدد العناصر في كل مصفوفة جزئية‪.‬‬
‫‪ :[x[i][j‬للوصول إلى العنصر عند سطر معين وعمود معين‪.‬‬
‫‪-1‬ليس من الضروري أن يكون للمصفوفات الجزئية نفس الطول‪ ،‬كما هو موضح‬
‫فيما يلي‪:‬‬
‫‪6‬‬
‫‪3‬‬
‫‪5‬‬
‫‪5‬‬

‫}}‪int x[][]= {{3,5,6}, {3,5} , {6‬‬
‫‪x‬‬

‫مثال)‪:(5‬‬
‫أكتب برنامج يطبع مثلث باسكال‪:‬‬
‫‪1‬‬

‫‪6‬‬
‫‪4‬‬
‫‪3‬‬
‫‪1‬‬

‫‪1‬‬

‫‪1‬‬

‫‪1‬‬

‫‪2‬‬

‫‪1‬‬

‫{ ‪class pascal‬‬
‫{ )][‪public static void main(String args‬‬
‫‪int n = Integer.parseInt(JOptionPane.showInputDialog("Enter‬‬
‫;))"‪Number‬‬
‫;][]‪int[][] pascal = new int[n‬‬

‫‪17‬‬

for (int i = 0; i < pascal.length; i++) {
pascal[i] = new int[i + 1];
for (int j = 0; j < pascal[i].length; j++)
if ( (i == j) || (j == 0))
pascal[i][j] = 1;
else
pascal[i][j] = pascal[i - 1][j] + pascal[i - 1][j - 1];
}
for (int i = 0; i < pascal.length; i++)
for (int j = 0; j < pascal[i].length; j++)
if (i == j)
System.out.println(pascal[i][j]);
else
System.out.print(pascal[i][j] + " ");
}
}

:(6)‫مثال‬
:‫ والمطلوب‬،‫ليكن لدينا المصفوفة التالية‬
.‫أكتب طريقة تقوم بحساب مجموع مركبات كل سطر عاى حدا‬-1
.‫أكتب طريقة تقوم بحساب مجموع مركبات كل عمود على حدا‬-2
.‫أكتب طريقة تقوم بإيجاد أكبر وأصغر مركبة بين مركبات المصفوفة‬-3
.‫أكتب طريقة تقوم بحساب مجموع العداد الزوجية والفردية كل ً على حدا‬-4
:‫أمثلة‬

int[] i=new int[2]{5,20};
int[5] i={1,23,3,4,5};

‫خطأ أثناء الترجمة ل يجب تحديد طول‬
new ‫المصفوفة بعد المعامل‬
‫أو بعد اسم المصفوفة‬

int i[]={ { }, new int[]{}};
int i[][]={{1,2},new int[2]};
int ii[]={2,3,4};

‫تعريفات صحيحة‬

:Flow Control ‫بنى التحكم‬-1
:Selection Statements ‫عبارات إتخاذ القرار‬-1
:if ‫عبارة‬-1
:if ‫الشكل العام لتعليمة‬

if (<expression1>)
{
// if <expression1> returns true, statements in this block are
executed.
}
[
else if (<expression2>)
{
/ if <expression1> is false and <expression2> is true,
Then statements in this block will be executed
}
..
else
{
// if the expression in the if statement and the expressions
in all the else if statements were false, then the statements

18

‫‪in this block will be executed.‬‬
‫}‬
‫]‬

‫يجب أن يكون )‪ (expression‬تعبير منطقي أي أن قيمتججه إمججا ‪ false‬أو‬
‫‪ ،true‬ج ويجب استخدام )‪ (y==x‬لمقارنة قيمتين وليس )‪ (y=x‬إل فججي‬
‫حال كانت المتحججولين )‪ (x, y‬همججا متحججولين منطقييججن )ولكججن سججيعطي‬
‫نتيجة خاطئة فقط بدون اعتراض المترجم(‪ ،‬إذا كان )‪ (x, y‬متحولين من‬
‫نمط مغاير للنمط المنطقي سيعترض المترجم )خطأ أثناء الترجمة(‪ ،‬كمججا‬
‫هو موضح في المثال التالي‪:‬‬
‫;‪boolean b1 = false‬‬
‫;‪boolean b2 = true‬‬
‫)‪if(b1=b2‬‬
‫;)‪System.out.println("The value of b1: " + b1‬‬

‫‪-2‬عبارة ‪:switch‬‬
‫الشكل العام لعبارة ‪:switch‬‬
‫التعليمات التي يجب أن تنفذ في‬
‫حال كان قيمة الشرط )‬
‫‪ (exp=value1‬هي )‪(true‬‬
‫التعليمات التي يجب أن تنفذ في‬
‫حال كان قيمة الشرط )‬
‫‪ (exp=value2‬هي )‪(true‬‬
‫التعليمات التي يجب أن تنفذ في حال‬
‫كان قيمة )‪ (exp‬مغايرة لكل القيم‬
‫الموجود في عبارات ‪.case‬‬

‫)><(‪switch‬‬
‫{‬
‫‪case value1:‬‬
‫‪statements‬‬
‫;‪break‬‬
‫‪case value2:‬‬
‫‪statements‬‬
‫;‪break‬‬
‫‪……..‬‬
‫‪default:‬‬
‫‪statements‬‬
‫;‪break‬‬
‫}‬

‫ملحظات‪:‬‬
‫‪-1‬ليس من الضججروري أن تكججون عبججارة ‪ default‬آخججر جججزء فججي عبججارة‬
‫‪.switch‬‬
‫‪-2‬أثناء التنفيذ‪ ،‬إذا تم مصادفة جزء ‪ default‬فسجيتم تنفيجذها وإذا كجانت‬
‫ل تحوي عبارة ‪ ،break‬فسججيتم تنفيججذ كججل التعليمججات الموجججودة فججي‬
‫عبجارات ‪ case‬الموججودة بعججد عبجارة ‪ default‬حججتى ولججو كجان قيمججة‬
‫الشرط )‪ (exp=value‬هي ‪.false‬‬
‫‪-3‬يجب أن يكون وسيط عبارة ‪ switch‬من النماط التالية ‪int, short,‬‬
‫‪.char, byte, enum‬‬
‫‪-4‬يجب أن يكون وسيط عبارة ‪ case‬من نمط بيانات رقمي‪.‬‬
‫‪-5‬ل يمكن التصريح عن متحول عبارة ‪ switch‬داخل القججواس‪ ،‬كمججا هججو‬
‫موضح فيما يلي‪:‬‬
‫);‪swicth(int x=2‬‬
‫بينما يمكن استخدام العمليات الحسابية البسيطة‪:‬‬
‫)‪Switch(x+y‬‬
‫)‪Switch(x++‬‬
‫مثال‪:‬‬

‫{ ‪class SwitchTest‬‬
‫{ )‪public static void main(String[] args‬‬
‫;))(‪Signal sig = Enum.valueOf(Signal.class, args[0].toUpperCase‬‬
‫{ )‪switch (sig‬‬
‫‪case RED:‬‬

‫‪19‬‬

‫;)(‪sig.redSays‬‬
‫;‪break‬‬
‫‪case YELLOW:‬‬
‫;)(‪sig.yellowSays‬‬
‫‪case GREEN:‬‬
‫;)(‪sig.greenSays‬‬
‫}‬
‫}‬
‫}‬
‫{ ‪enum Signal‬‬
‫;‪RED, YELLOW, GREEN‬‬
‫{)(‪public void redSays‬‬
‫;)"‪System.out.println("STOP‬‬
‫}‬
‫{)(‪public void yellowSays‬‬
‫;)"‪System.out.println("STOP if it is safe to do so.‬‬
‫;)"‪System.out.println("Otherwise‬‬
‫}‬
‫{)(‪public void greenSays‬‬
‫;)"‪System.out.println("Keep going.‬‬
‫}‬
‫}‬

‫‪-6‬عندما تكون قيمة الشرط )‪ (exp=value‬هي ‪ ،true‬فإنه سيتم تنفيذ‬
‫التعليمات الموجودة في عبججارة ‪ ،case‬إذا كججانت عبججارة ‪ case‬تحججوي‬
‫على تعليمة ‪ break‬سينتقل التحكم إلى التعليمة الموجودة بعد عبارة‬
‫‪ ،switch‬أمججا إذا كججانت ل تحتججوي علججى تعليمججة ‪ ،break‬سججتم تنفيججذ‬
‫التعليمججات الموجججودة فججي عبججارة ‪ case‬بالضججافة إلججى التعليمججات‬
‫الموجودة في عبارات ‪ case‬التاليججة حججتى تصججادف تعليمججة ‪ break‬أو‬
‫تنتهي تعليمة ‪.switch‬‬
‫تأكيــد‪:‬‬
‫يجب أن يكون وسيط عبارة ‪ switch‬من نمط ‪ int‬أو أي وسيط ثاني مججن‬
‫نمججط ‪ ،char, short, byte, enum‬إذا كججان وسجيط عبجارة مججن نمججط‬
‫‪ double, float‬سيعطي المترجم خطججأ‪ ،‬ويججب أن يكجون قيمججة وسجيط‬
‫‪ case‬ضججمن مجججال نمججط بيانججات متحججول تعليمججة ‪ switch‬وإل سججيعطي‬
‫المترجم خطأ‪ ،‬كما هو موضح فيما يلي‪:‬‬

‫;‪byte i=2‬‬
‫)‪switch (i‬‬
‫{‬
‫‪case 3:‬‬
‫;)"‪System.out.println("Three‬‬
‫;‪break‬‬
‫خطأ أثناء الترجمة‪ ،‬يجب أن تكون‬
‫‪case 130:‬‬
‫القيمة ضمن مجال نمط بيانات‬
‫;)"‪System.out.println("One Thirty‬‬
‫متحول تعليمة ‪switch‬‬
‫;‪break‬‬
‫}‬

‫‪-1‬عبارات التكرار ‪:Iteration Statements‬‬
‫‪-1‬عبارة ‪:while‬‬
‫الشكل العام لعبارة ‪ while‬هو‪:‬‬

‫{ ) >‪while ( <expression‬‬
‫‪// if the <expression> is true,‬‬
‫‪// execute the statements in this block.‬‬

‫‪20‬‬

‫‪// After the execution, go back to check the condition again.‬‬
‫}‬
‫‪-2‬عبارة ‪:do-While‬‬

‫الشكل العام لعبارة ‪:do-While‬‬

‫{ ‪do‬‬
‫‪// Execute the statements in this block.‬‬
‫يجب أن تكون قيمة التعبير )‬
‫;) >‪} while ( <expression‬‬
‫‪ (expression‬هي ‪ true‬أو‬
‫‪false‬‬

‫ملحظة‪:‬‬
‫يتم تنفيذ التعليمات الموجودة ضمن كتلة ‪ do-While‬مرة واحدة على القججل‬
‫حتى ولو كان الشرط غير محقق )لنججه أول يتججم تنفيججذ التعليمججات ثججم فحججص‬
‫الشرط(‪.‬‬
‫‪-3‬عبارة ‪:for‬‬
‫الشكل العام لعبارة ‪:for‬‬

‫{ )>‪for ( <statement>; <test>; <expression‬‬
‫‪// if the <test> is true, execute the block.‬‬
‫}‬

‫‪ :< statement >‬تستخدم لتهيئة متحول الحلقة‪.‬‬
‫‪ :<test>‬شرط منطقية قيمته إما ‪ true‬أو ‪.false‬‬
‫‪ :<expression>‬يتججم تنفيججذها مباشججرة بعججد تنفيججذ التعليمججات‬
‫الموجودة في حلقججة ‪ for‬ومججن ثججم سججيتم فحججص الشججرط )‪(test‬‬
‫مجججددًا‪ ،‬إذا كججانت قيمججة الشججرط ‪ true‬يتججم تنفيججذ التعليمججات‬
‫الموجودة ضمن ‪ for‬وإل سينتقل التحكم إلى التعليمات الججتي بعججد‬
‫تعليمة ‪.for‬‬
‫ملحظات‪:‬‬
‫‪‬إذا تم التصريح عم متحول الحلقة وتهيئته خارج خارج الحلقة‬
‫يجب أن يعطى قيمة ابتدائية داخل الحلقة‪:‬‬
‫;‪int i=0‬‬
‫)‪for(i; i<5; i++‬‬

‫خطأ أثناء الترجمة‬

‫بينما المثال التالي صحيح‪:‬‬

‫)‪for(i=i+1; i<5; i++‬‬

‫‪‬يمكججن أن تكججون >‪<statement‬عبججارتي إسججناد معججا ً ) ‪non-‬‬
‫‪ (declarative expressions‬بينهمججا فاصججلة‪ ،‬كمججا موضججح فججي‬
‫المثال التالي‪:‬‬
‫)‪for( i++, j++ ; i+j < 5 ; i++‬‬

‫بينما ل يمكن أن تكججون >‪ <statement‬عبججارتي تصججريح معجا ً )‬
‫‪ (declarative statement‬أو مزيججج مججن عبججارات تصججريح )‬
‫‪ (declarative statement‬وعبارات إسناد )‪non-declarative‬‬
‫‪ ،(statement‬كما هو موضح في المثال التالي‪:‬‬
‫)‪for ( int i = 0, int j = 0; i+j < 5; i++‬‬
‫) ‪for (int i = 0; i = i + 1; i + j < 5; i++‬‬

‫‪‬يمكن أن نحذف المكونات الثلث لعبارة ‪ for‬ونضع فقط الفواصل‬
‫المنقوطة‪ ،‬كما هو موضح في المثال التالي‪:‬‬

‫{ ); ;(‪for‬‬
‫;)"‪System.out.println ("Round and round we go for ever.‬‬
‫}‬

‫بينما التعليمة التالية تعطي خطأ أثناء الترجمة‪:‬‬

‫‪21‬‬

for() {
System.out.println ("Round and round we go for ever.");
}
:for-each ‫عبارة‬-1

،Collection ‫تستخدم للمرور على عناصر مصجفوفة أو أي مجن نججوع مجن‬
:for-each ‫والشكل العام لعبارة‬
for (<variable> : <collection>) {
// the block code
}

‫ فججي المججرور‬Collection ‫ العنصججر الول مججن‬Variable ‫أول ً يتججم إسججناد‬
.‫الخ‬...‫ ومن ثم يسند إلى العنصر الثاني في المرور الثاني وهكذا‬،‫الول‬
:‫مثال‬

class ForEachTest {
public static void main(String[] args) {
int[] myArray = new int[3];
myArray[0]= 10;
myArray[1] = 20;
myArray[2] = 30;
// int i=0;
for(int i : myArray)
System.out.println (i);
}
}

:Break Statements ‫تعليمات التفريع‬-2
:break ‫عبارة‬-1
‫تستعمل هذه التعليمة لكسر حلقة وانتقال التحكم إل التعليمججة الموججودة‬
.switch ‫ وكذلك تستعمل في عبارة‬،‫بعد تعليمة التكرار‬
:‫مثال‬
for ( int i = 3; i >0; i-- ) {
for (int j = 0; j<4; j++) {
System.out.println( "i=" + i + " and j=" + j);
if ( i == j ) break;
}
}
i=3
i=3
i=3
i=3
i=2
i=2
i=2
i=1
i=1

and
and
and
and
and
and
and
and
and

:‫وتكون النتيجة‬

j=0
j=1
j=2
j=3
j=0
j=1
j=2
j=0
j=1

‫ يمكججن أن نحججدد أي‬،‫إذا كان لدينا حلقات متداخلة كما في المثال السابق‬
:‫ وله الصيغة التالية‬،‫حلقة نريد كسرها عند تحقق شرط معين‬
break <identifier>;

OuterLoop: for ( int i = 3; i >0; i-- ) {
for (int j = 0; j<4; j = j + 1) {
System.out.println ( "i=" + i + " and j=" + j);
if ( i == j ) break OuterLoop;

22

:‫مثال‬

‫}‬
‫}‬

‫ولها الخرج التالي‪:‬‬

‫‪j=0‬‬
‫‪j=1‬‬
‫‪j=2‬‬
‫‪j=3‬‬

‫‪and‬‬
‫‪and‬‬
‫‪and‬‬
‫‪and‬‬

‫‪i=3‬‬
‫‪i=3‬‬
‫‪i=3‬‬
‫‪i=3‬‬

‫أي يتم كسر الحلقة الداخلية الموجودة فيها تعليمة ‪ ،break‬بالضافة إلججى‬
‫الحلقة الخارجية المعلمة بجج ‪OuterLoop‬‬
‫‪-2‬عبارة ‪:continue‬‬
‫عند تنفيذ تعليمة ‪ ،continue‬يتم كسر المرور الحالي للحلقة فقججط ويتججم‬
‫تنفيذ المرور التالي للحلقة )أي فقط يتم تجاهل التعليمات الموجودة بعججد‬
‫تعليمة ‪ continue‬في المرور الحالي(‪.‬‬
‫ملحظة‪:‬‬
‫يتججم اختبججار الشججرط البوليججاني بعججد تنفيججذ تعليمججة ‪ continue‬فججي حلقججة‬
‫‪ ،while, do-while‬بينما يتم ننفيذ )>‪ (<expression‬بعد تنفيذ تعليمججة‬
‫‪.continue‬‬
‫مثال‪:‬‬
‫والنتيجة هي‪:‬‬
‫{ ) ‪for ( int i = 0; i < 5; i++‬‬
‫;‪if ( i == 3 ) continue‬‬
‫;) ‪System.out.println( "The value of i is " + i‬‬
‫}‬

‫والنتيجة هي‪:‬‬

‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪4‬‬

‫‪is‬‬
‫‪is‬‬
‫‪is‬‬
‫‪is‬‬

‫‪i‬‬
‫‪i‬‬
‫‪i‬‬
‫‪i‬‬

‫‪of‬‬
‫‪of‬‬
‫‪of‬‬
‫‪of‬‬

‫‪value‬‬
‫‪value‬‬
‫‪value‬‬
‫‪value‬‬

‫‪The‬‬
‫‪The‬‬
‫‪The‬‬
‫‪The‬‬

‫في حال الحلقات المتداخلججة يمكججن أن نحججدد مججا هججي الحلقججة الججتي نريججد‬
‫نتجاوز فيها أحد المرورات باستعمال العلمات باستخدام الصيغة التالية‪:‬‬

‫;>‪continue <indentifier‬‬

‫مثال‪:‬‬

‫{ ) ‪OuterLoop: for ( int i = 3; i >0; i--‬‬
‫{ )‪for (int j = 0; j<4; j = j + 1‬‬
‫;)‪System.out.println ( "i=" + i + " and j=" + j‬‬
‫;‪if ( i == j ) continue OuterLoop‬‬
‫}‬
‫}‬

‫والنتيجة هي‪:‬‬

‫‪j=0‬‬
‫‪j=1‬‬
‫‪j=2‬‬
‫‪j=3‬‬
‫‪j=0‬‬
‫‪j=1‬‬
‫‪j=2‬‬
‫‪j=0‬‬
‫‪j=1‬‬

‫‪23‬‬

‫‪and‬‬
‫‪and‬‬
‫‪and‬‬
‫‪and‬‬
‫‪and‬‬
‫‪and‬‬
‫‪and‬‬
‫‪and‬‬
‫‪and‬‬

‫‪i=3‬‬
‫‪i=3‬‬
‫‪i=3‬‬
‫‪i=3‬‬
‫‪i=2‬‬
‫‪i=2‬‬
‫‪i=2‬‬
‫‪i=1‬‬
‫‪i=1‬‬

:‫ما هي نتيجة تنفيذ الكود التالي‬-1
boolean x = true;
boolean y = false;
int i = 1;
int j = 1;
if((i++ == 1) && (y = true))i++;
if((++j == 1) && (x = false))j++;
if((x = false) || (++i == 4))i++;
if((y = true) || (++j == 4))j++;
System.out.println("i=" + i);
System.out.println("j=" + j);
System.out.println("x=" + x);
System.out.println("y=" + y);

for ( int j = 1; j < 4; j++)
{
if ( i == j )
continue
OuterLoop;
System.out.println ( " i = " +
i+"
j="
+ j );
}
A.
B.
C.
D.
E.
F.

A. i=5 j=3 x=true y=false
B. i=6 j=4 x=false y=true
C. i=5 j=3 x=false y=true
:‫ما هي نتيجة تنفيذ الكود التالي‬-1
int i = 0;
do
{
System.out.println ( " do
block.");
} while( i > 0)

‫ما هي الخيارات التي تمثججل نتيجججة تنفيججذ‬-1
:‫الكود التالي‬
for (int i = 0; i < 2; i++)
for ( int j = 1; j < 4; j++) {
if ( i == j ) continue;
System.out.println ( " i = " + i
+
"j
="+
j );
}
i
i
i
i
i
i

=
=
=
=
=
=

0
0
0
1
1
1

j
j
j
j
j
j

=
=
=
=
=
=

=
=
=
=
=
=

0
0
0
1
1
1

j=1
j=2
j=3
j=1
j=2
j=3

:‫ما نتيجة تنفيذ الكود التالي‬-1
long i = 2;
switch (i) {
case 1:
System.out.print("Case 1");
case 2:
System.out.print("Case 2");
case 3:
System.out.print("Case 3");
default:
System.out.print("Default");
}
.Case 2 ‫يطبع‬.1
.Case 2, Case 3 ‫يطبع‬.2
. Case2, Case 3, Default ‫يطبع‬.3
.‫خطأ أثناء الترجمة‬.4

.do block ‫يطبع‬.1
.‫خطأ أثناء الترجمة‬.2
.‫خطأ أثناء التنفيذ‬.3
‫يتججم تنفيججذ الكججود بججدون خطججأ ولكججن ل‬.4
.‫يطبع شيء‬

A.
B.
C.
D.
E.
F.

i
i
i
i
i
i

:‫ما هي نتيجة تنفيذ الكود التالي‬-1
int i = 1, j = 1;
switch (i + j) {
case 1:
System.out.println("Case 1");
case 2:
System.out.println("Case 2");
case 3:
System.out.println("Case 3");
default:
System.out.println("Default");
}
. Case 2 ‫يطبع‬.1
.‫خطأ أثناء الترجمة عند السطر الثاني‬.2
. Case 2, Case 3, Default ‫يطبع‬.3
.‫خطأ أثناء الترجمة عند السطر الول‬.4

1
2
3
1
2
3

‫ما هي الخيارات التي تمثججل نتيجججة تنفيججذ‬-1
:‫الكود التالي‬
OuterLoop: for (int i = 0; i < 2;
i++)

:‫ما هي نتيجة تنفيذ الكود التالي‬-1
class ContinueTest {
24

public static void main(String[]
arg) {
int i = 2;
Outer:
if (i < 5) {
System.out.println("I: " + i);
i++;
continue Outer;
}
}
}
.‫خطأ أثناء الترجمة عند السطر الثامن‬.1
: ‫يطبع‬.2
I: 2
I: 3
I: 4
:‫يطبع‬.3
I: 2
.‫خطأ أثناء التنفيذ‬.4

D. for(int I : myArray.iterator())
:‫ما هي العبارات الصحيحة‬-1
A. while (int i < 7) {
i++;
System.out.println("i is "
+ i);
}
B. int i = 3;
while (i) {
System.out.println("i is "
+ i);
}
C. int j = 0;
for (int k = 0, j + k != 10; j++,
k++)
System.out.println("j=" + j +
", k=" + k);
D. int j = 0;
loop: do {
System.out.println("j=" + j+
+);
if (j == 3)
continue loop;
} while (j < 10);

:‫ماذا يطبع الكود التالي‬-1
boolean i = true;
boolean j = false;
short k = 10;
if ( (k == 10) && (j = true))
k--;
if ( (i = false) || (k == 9))
k--;
k--;
System.out.println("k=" + k);

:‫ما هي نتيجة تنفيذ الكود التالي‬-1
int x = 0, y = 4, z = 5;
if (x > 2)
if (y < 5)
System.out.println("message
one");
else
System.out.println("message
two");
else if (z > 5)
System.out.println("message
three");
else
System.out.println("message
four");

A. 10
B. 7
C. 8
D. 9
‫ما هو السطر البرمجي الذي يجب وضعه‬-1
‫في السطر الثامن للمججرور علججى عناصججر‬
:‫المصفوفة‬
class RevQTwo{
static int[] myArray = new
int[3];
public static void main(String []
args) {
myArray[0]=1;
myArray[1]=2;
myArray[2]=3;
………………………………….
System.out.print(i);
}
}
A. for(int[] i : myArray)
B. for(int i : myArray)
C. for(myArray : int i)

.message one
.message two
.message three
.message four

‫يطبع‬.1
‫يطبع‬.2
‫يطبع‬.3
‫يطبع‬.4

:‫ ما هي نتيجة تنفيذ الكود التالي‬-1
int j = 2;
switch (j) {
case 2:
25

System.out.println("value is
two");
case 2 + 1:
System.out.println("value is
three");
break;
default:
System.out.println("value is " +
j);
break;
}
.value is two ‫يطبع‬.1
:‫يطبع‬.2
value is two
value is three
value is " + j
.‫خطأ أثناء الترجمة عند السطر الخامس‬.3
:‫يطبع‬.4
value is two
value is three
value is " + j

C.
D.
E.
F.

public class LogicTest{
public static void main(String[]
args) {
int i = 5;
int j = 10;
int k = 15;
if ( (i < j) || ( k-- > j) )
System.out.println
("First if, value of k: " +
k);
if ( (i > j) && ( --k < j) )
System.out.println
("Second if, value of k: "
+ k);
System.out.println
("Out of if, k:" + k);
}
}
A. First if, value of k: 14
Out of if, k: 13
B. First if, value of k: 15
Out of if, k: 14
C. First if, value of k: 15
Out of if, k: 13
D. First if, value of k: 15
Out of if, k: 15

‫ مصججفوفة عناصججرها‬salaries ‫ إذا كججانت‬-1
‫ ما هي العبارة الصججحيحة‬،float ‫من نمط‬
:‫للمرور على عناصر المصفوفة‬
A. for (float f:salaries)
B. for (int i:salaries)
C. for (float f::salaries)
D. for (int i::salaries)
A.
B.
C.
D.
A.
B.
C.
D.
E.
F.

long
float
char
String
:‫ما نتيجة تنفيذ الكود التالي‬-1

:‫ ما هي العبارات الصحيحة‬-1
for (int i=0, j=1; i<10; i++, j++)
for (int i=0, j=1;; i++, j++)
for (int i=0, float j=1; ; i++, j++)
for (String s = ""; s.length()<10;
s += '!')
:‫ ما هي العبارات الصحيحة‬-1
while (int a = 0) { /* whatever
*/ }
while (int a == 0) { /* whatever
*/ }
do { /* whatever */ }
while (int a = 0)
do { /* whatever */ }
while (int a == 0)
for (int a==0; a<100; a++)
{ /* whatever */ }
‫كل العبارات السابقة خاطئة‬

:‫ما هي نتيجة تنفيذ الكود التالي‬-2
public class LogicTest{
public static void main(String[]
args) {
int i = 5;
int j = 10;
int k = 15;
if ( (i < j) || ( k-- > j) )
System.out.println
("First if, value of k: " + k);
if ( (i < j) && ( --k < j) )
System.out.println
("Second if, value of k: " +
k);
System.out.println("Out of if, k:" +
k);
}
}
A. First if, value of k: 14
Out of if, k: 13

‫ما هي أنماط البيانات الصججحيحة لوسججيط‬-1
:switch ‫عبارة‬
A. byte
B. int
26

B. First if, value of k: 15
Out of if, k: 14
C. First if, value of k: 15
Out of if, k: 13

A.
B.
C.
D.
E.

‫ما هي السججطر الججتي سججتكون جججزء مججن‬-3
:‫نتيجة التنفيذ‬
for (int i = 0; i < 2; i++) {
for ( int j = 1; j < 4; j++) {
if ( i == j ) {
continue;
}
System.out.println ( " i = " + i + " j =
" + j );
}}
A. i = 0 j = 1
B. i = 0 j = 2
C. i = 0 j = 3
D. i = 1 j = 1
E. i = 1 j = 2
F. i = 1 j = 3

i
i
i
i
i

=
=
=
=
=

6
5
6
5
6

and
and
and
and
and

j=
j=
j=
j=
j=

5
5
4
6
6

‫أي من السطر التالية ستعطي خطأ أثناء‬-1
:‫الترجمة‬
A. int i=0;
if(i) {
System.out.println("Hello");
}
B. boolean b=true;
boolean b2=true;
if(b==b2)
System.out.println("So true");
C. int i=1;
int j=2;
if(i==1|| j==2)
System.out.println("OK");
D. int i=1;
int j=2;
if(i==1 &| j==2)
System.out.println("OK");

:‫ماذا يطبع البرنامج التالي‬-4
public class test (
private static int j = 0;
private static boolean
methodB(int k) {
j += k;
return true;
}
public static void methodA(int i) {
boolean b:
b = i < 10 | methodB (4);
b = i < 10 || methodB (8);

:‫ما هي نتيجة تنفيذ الصف التالي‬-1
public class Ombersley{
public static void main(String
argv[]){
boolean b1 = true;
if((b1 ==true) || place(true))
System.out.println("Hello
Crowle");
}
public static boolean
place(boolean location){
if(location==true)
System.out.println("Borcetshire"
);
System.out.println("Powick");
return true;
}
}
‫خطأ أثناء الترجمة‬.1
Hello Crowle ‫ يطبع‬.2
‫ يطبع‬.3
Borcetshire
Hello Crowle
Hello Crowle
‫ل يطبع شئء‬.4

}
public static void main (String
args[] )
{
methodA (0);
System.out.println(j);
}
}
. 0 ‫يطبع‬.1
. 4 ‫يطبع‬.2
. 8 ‫يطبع‬.3
. 12 ‫يطبع‬.4
:‫ما هي قيمة )( بعد التنفيذ‬-1
int i= 1, j= 10 ;
do {
if (i++> --j) continue;
} while (i<5);
27

Jcdddf-1
kfdfd-2
fddfd ‫لب‬

‫تلغعلغلعغل‬-1
-2

28

Sign up to vote on this title
UsefulNot useful