You are on page 1of 28

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

‫يهدف هذا الفصل إلى التعرف على المفاهيم التالي‪:‬‬


‫✔المتحولت‪.‬‬
‫✔أنماط البيانات‪.‬‬
‫✔العمليات‪.‬‬
‫✔بنى التحكم‪.‬‬
‫✔المصفوفات‪.‬‬
‫✔الصف ‪.String‬‬
‫✔الصف ‪.BufferString‬‬

‫‪1‬‬
‫‪-1‬المتحولت‪:‬‬
‫الشكل العام للتصريح عن متحول‪:‬‬
‫‪Data_type‬‬ ‫;‪var_Name‬‬
‫‪Data_Type‬‬ ‫;‪var_Name = init_value‬‬
‫‪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‬لتخزين قيمة منطقية صحيحة أو خاطئة‪.‬‬

‫يوضح الجدول )‪ (1‬أنماط البيانات البسيطة الموجودة في جافا‪.‬‬


‫أصغر قيمة القيمة البتدائية الحجم)‪ bits‬نمط البيانات‬ ‫أكبر قيمة‬
‫(‬
‫‪Boolean‬‬ ‫‪1‬‬ ‫‪False‬‬ ‫‪false‬‬ ‫‪True‬‬
‫‪Byte‬‬ ‫‪8‬‬ ‫‪0‬‬ ‫‪7‬‬
‫‪(2-)128-‬‬ ‫‪2 -)127‬‬
‫‪7‬‬

‫‪(1‬‬
‫‪Short‬‬ ‫‪16‬‬ ‫‪0‬‬ ‫‪215-‬‬ ‫‪2 -1‬‬
‫‪15‬‬

‫‪Char‬‬ ‫‪16‬‬ ‫\‪u000‬‬ ‫)\)‪u000‬‬ ‫\‪uffff‬‬


‫‪((0‬‬
‫‪Int‬‬ ‫‪32‬‬ ‫‪0‬‬ ‫‪231-‬‬ ‫‪231-1‬‬
‫‪Long‬‬ ‫‪64‬‬ ‫‪0L‬‬ ‫‪263-‬‬ ‫‪263-1‬‬
‫‪Float‬‬ ‫‪32‬‬ ‫‪0.0f‬‬
‫‪Double‬‬ ‫‪64‬‬ ‫‪0.0‬‬
‫جدول)‪(1‬‬
‫‪1.1‬أسماء المتحولت‪:‬‬
‫يجب اتباع القواعد التالية أثناء تسمية المتحولت‪:‬‬
‫‪‬يجب أن يبدأ بحرف )‪ (A-Z, a-z‬أو ‪ Unicode Character‬أو )_( أو )‪.($‬‬
‫‪‬يتبع الحرف الول تسلسل من الحرف أو الرقام أو ‪UnicodeCharacter‬‬
‫أو )_( أو )‪.($‬‬
‫‪‬يجب أن ل يكون السم كلمة محجوزة )‪ (const, goto‬أو كلمة مفتاحية‪.‬‬
‫أمثلة‪:‬‬
‫‪‬‬ ‫;‪int \u0046x=8‬‬
‫‪‬‬ ‫;‪int _fd=7‬‬
‫‪‬‬ ‫;‪char $f‬‬ ‫معرفات صالحة‬
‫‪‬‬ ‫;‪boolean foo‬‬
‫‪‬‬ ‫;‪int bid3_4h‬‬

‫‪2‬‬
‫‪‬‬ ‫;‪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‬‬ ‫خطأ أثناء الترجمة‪ ،‬بيبن أنه يجب إعطاء‬
‫;"‪return "Postive‬‬ ‫المتحول ‪ tmp‬قيمة ابتدائية‬
‫;‪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‬‬
‫وهي ‪.* ,- ,/ ,% ,+‬‬
‫كل النماط الحقيقية‪.‬‬ ‫تطبيقها على‬
‫‪arithmetic‬‬ ‫‪-1‬يمكن‬
‫‪addition‬‬
‫‪-2‬يمكن استخدام )‪ (+‬لجمع السلسل‪.‬‬
‫مثال‪:‬‬
‫;)"‪System.out.println(1+2+"3‬‬
‫تطبع ‪.33‬‬
‫;)‪System.out.println("1"+2+3‬‬
‫تطبع ‪.123‬‬
‫‪string concatenation‬‬
‫‪-3‬قسججمة عججدد صججحيح علججى )‪ (0‬يرمججي اسججتثناء ‪،ArithmeticException‬‬
‫بينما يعطي قسمة عدد حقيقي على صفر النهاية)‪ ∞-‬أو ‪.(∞+‬‬
‫‪-4‬تستخدم العملية )‪ (%‬للحصججول علججى بججاقي القسججمة‪ ،‬تكججون إشججارة ناتججج‬
‫العملية )‪ (%‬حسب إشججارة المعامججل الول لهججذه العمليججة‪ ،‬وعنججد حسججاب‬
‫بجججاقي قسجججمة عجججدد صجججحيح علجججى الصجججفر يتجججم رمجججي اسجججتثناء )‬
‫‪ ،(ArithmeticException‬أما باقي قسمة عدد حقيقي على الصفر هججي‬
‫اللنهاية‪.‬‬
‫مثال‪:‬‬
‫‪‬‬ ‫;‪int z=11%3‬‬ ‫يطبع ‪2‬‬
‫;)‪System.out.println(z‬‬

‫‪‬‬ ‫;)‪z=11%(-3‬‬ ‫يطبع ‪2‬‬


‫;)‪System.out.println(z‬‬

‫‪6‬‬
‫‪‬‬ ‫;‪z=-11%3‬‬ ‫يطبع ‪2-‬‬
‫;)‪System.out.println(z‬‬

‫‪‬‬ ‫;)‪z=-11%(-3‬‬ ‫يطبع ‪2-‬‬


‫;)‪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‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1 a0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

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

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


‫إضافتها‬

‫‪ >>-2‬إزاحة إلى اليمين مع أخذ الشارة بعين العتبار‪.‬‬


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

‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1 a0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

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

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


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

‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1a 0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1a>>3‬‬
‫‪1 1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪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‬‬
‫‪1‬‬ ‫‪True‬‬
‫‪0‬‬ ‫‪false‬‬

‫يوضح الجدول )‪ (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; ‫( لذلك‬int ‫ يتم تقييمها ك‬10 ‫خطأ أثناء الترجمة )القيمة‬
//b=b+10; ‫( بشكل صريح‬byte) ‫يجب قصرها إلى‬
b+=10;
‫ لن عمليجات السجناد‬،‫أما السطر الول والسطر الثاني يتم ترجمتها بشجكل صجحيح‬
.(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‬‬
‫;‪i = i++‬‬ ‫يطبع )‪ (0‬لن العملية )=( لها‬
‫;‪i = i++‬‬ ‫الولوية القل‬
‫;‪i = i++‬‬
‫;)‪System.out.println(i‬‬
‫;]‪int array[] = new int[5‬‬
‫;‪int index = 0‬‬
‫;‪array[index] = index = 3‬‬
‫)‪for (int c = 0; c < array.length; i++‬‬ ‫يأخذ العنصر الول القيمة )‪(3‬‬
‫;)]‪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‬‬
‫;‪float f1=1/3‬‬
‫العبارة صحيحة‪ ،‬لن القيمة )‪ (1/3‬هي من نمط ‪.int‬‬
‫;‪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‬‬
‫مثال‪:‬‬
‫;‪int[] a‬‬
‫][‪String‬‬ ‫;‪s‬‬
‫في هذه المرحلة ل يتم تحديد عدد عناصر المصفوفة )طول المصفوفة(‪.‬‬
‫‪-2‬حجز مكان للمصوفة في الذاكرة‪:‬‬
‫يتم إنشاء المصفوفة باستخدام المعامل ‪ new‬على الشكل التالي‪:‬‬
‫;]‪arr_Name=new Data_Type[size‬‬
‫أي‪:‬‬
‫;]‪a= new int[3‬‬
‫;]‪s=new String[3‬‬
‫مثال)‪:(1‬‬
‫{ ‪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‬‬
‫;"‪s[1]="to‬‬
‫;"‪s[2]="Java‬‬

‫‪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‬لحجز مكان فججي للمصججفوفة فججي الججذاكرة علججى‬
‫الشكل التالي‪:‬‬
‫‪4‬‬ ‫;]‪int[][] x=new int[2][3‬‬
‫)‪for(int i=0;i<x.length;i++‬‬
‫‪x‬‬
‫‪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‬‬
‫‪1‬‬ ‫‪1‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪6‬‬
‫‪4‬‬
‫‪3‬‬
‫‪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‬‬
‫)><(‪switch‬‬
‫التعليمات التي يجب أن تنفذ في‬
‫{‬
‫‪case value1:‬‬ ‫حال كان قيمة الشرط )‬
‫‪statements‬‬ ‫‪ (exp=value1‬هي )‪(true‬‬
‫;‪break‬‬
‫التعليمات التي يجب أن تنفذ في‬
‫‪case value2:‬‬
‫‪statements‬‬
‫حال كان قيمة الشرط )‬
‫;‪break‬‬ ‫‪ (exp=value2‬هي )‪(true‬‬
‫‪……..‬‬
‫‪default:‬‬
‫التعليمات التي يجب أن تنفذ في حال‬
‫‪statements‬‬
‫;‪break‬‬ ‫كان قيمة )‪ (exp‬مغايرة لكل القيم‬
‫}‬ ‫الموجود في عبارات ‪.case‬‬

‫ملحظات‪:‬‬
‫‪-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 and j=0
i=3 and j=1
i=3 and j=2
i=3 and j=3
i=2 and j=0
i=2 and j=1
i=2 and j=2
i=1 and j=0
i=1 and 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
‫}‬
‫}‬

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


‫‪i=3‬‬ ‫‪and‬‬ ‫‪j=0‬‬
‫‪i=3‬‬ ‫‪and‬‬ ‫‪j=1‬‬
‫‪i=3‬‬ ‫‪and‬‬ ‫‪j=2‬‬
‫‪i=3‬‬ ‫‪and‬‬ ‫‪j=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‬‬
‫}‬
‫والنتيجة هي‪:‬‬
‫‪The‬‬ ‫‪value‬‬ ‫‪of‬‬ ‫‪i‬‬ ‫‪is‬‬ ‫‪0‬‬
‫‪The‬‬ ‫‪value‬‬ ‫‪of‬‬ ‫‪i‬‬ ‫‪is‬‬ ‫‪1‬‬
‫‪The‬‬ ‫‪value‬‬ ‫‪of‬‬ ‫‪i‬‬ ‫‪is‬‬ ‫‪2‬‬
‫‪The‬‬ ‫‪value‬‬ ‫‪of‬‬ ‫‪i‬‬ ‫‪is‬‬ ‫‪4‬‬
‫في حال الحلقات المتداخلججة يمكججن أن نحججدد مججا هججي الحلقججة الججتي نريججد‬
‫نتجاوز فيها أحد المرورات باستعمال العلمات باستخدام الصيغة التالية‪:‬‬
‫;>‪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‬‬
‫}‬
‫}‬
‫والنتيجة هي‪:‬‬
‫‪i=3‬‬ ‫‪and‬‬ ‫‪j=0‬‬
‫‪i=3‬‬ ‫‪and‬‬ ‫‪j=1‬‬
‫‪i=3‬‬ ‫‪and‬‬ ‫‪j=2‬‬
‫‪i=3‬‬ ‫‪and‬‬ ‫‪j=3‬‬
‫‪i=2‬‬ ‫‪and‬‬ ‫‪j=0‬‬
‫‪i=2‬‬ ‫‪and‬‬ ‫‪j=1‬‬
‫‪i=2‬‬ ‫‪and‬‬ ‫‪j=2‬‬
‫‪i=1‬‬ ‫‪and‬‬ ‫‪j=0‬‬
‫‪i=1‬‬ ‫‪and‬‬ ‫‪j=1‬‬

‫‪23‬‬
:‫ما هي نتيجة تنفيذ الكود التالي‬-1 for ( int j = 1; j < 4; j++)
boolean x = true; {
boolean y = false; if ( i == j ) continue
int i = 1; OuterLoop;
int j = 1; System.out.println ( " i = " +
if((i++ == 1) && (y = true))i++; i+"
if((++j == 1) && (x = false))j++; j="
if((x = false) || (++i == 4))i++; + j );
if((y = true) || (++j == 4))j++; }
System.out.println("i=" + i);
System.out.println("j=" + j); A. i = 0 j=1
System.out.println("x=" + x); B. i = 0 j=2
System.out.println("y=" + y); C. i = 0 j=3
D. i = 1 j=1
A. i=5 j=3 x=true y=false E. i = 1 j=2
B. i=6 j=4 x=false y=true F. i = 1 j=3
C. i=5 j=3 x=false y=true
:‫ما هي نتيجة تنفيذ الكود التالي‬-1 :‫ما نتيجة تنفيذ الكود التالي‬-1
int i = 0; long i = 2;
do switch (i) {
{ case 1:
System.out.println ( " do System.out.print("Case 1");
block."); case 2:
} while( i > 0) System.out.print("Case 2");
case 3:
.do block ‫يطبع‬.1 System.out.print("Case 3");
.‫خطأ أثناء الترجمة‬.2 default:
.‫خطأ أثناء التنفيذ‬.3 System.out.print("Default");
‫يتججم تنفيججذ الكججود بججدون خطججأ ولكججن ل‬.4 }
.‫يطبع شيء‬ .Case 2 ‫يطبع‬.1
.Case 2, Case 3 ‫يطبع‬.2
‫ما هي الخيارات التي تمثججل نتيجججة تنفيججذ‬-1 . Case2, Case 3, Default ‫يطبع‬.3
:‫الكود التالي‬ .‫خطأ أثناء الترجمة‬.4
for (int i = 0; i < 2; i++)
for ( int j = 1; j < 4; j++) { :‫ما هي نتيجة تنفيذ الكود التالي‬-1
if ( i == j ) continue; int i = 1, j = 1;
System.out.println ( " i = " + i switch (i + j) {
+ case 1:
"j ="+ System.out.println("Case 1");
j ); case 2:
} System.out.println("Case 2");
case 3:
A. i = 0 j = 1 System.out.println("Case 3");
B. i = 0 j = 2 default:
C. i = 0 j = 3 System.out.println("Default");
D. i = 1 j = 1 }
E. i = 1 j = 2 . Case 2 ‫يطبع‬.1
F. i = 1 j = 3 .‫خطأ أثناء الترجمة عند السطر الثاني‬.2
. Case 2, Case 3, Default ‫يطبع‬.3
‫ما هي الخيارات التي تمثججل نتيجججة تنفيججذ‬-1 .‫خطأ أثناء الترجمة عند السطر الول‬.4
:‫الكود التالي‬
OuterLoop: for (int i = 0; i < 2; :‫ما هي نتيجة تنفيذ الكود التالي‬-1
i++) class ContinueTest {
24
public static void main(String[] D. for(int I : myArray.iterator())
arg) {
int i = 2; :‫ما هي العبارات الصحيحة‬-1
Outer: A. while (int i < 7) {
if (i < 5) { i++;
System.out.println("I: " + i); System.out.println("i is "
i++; + i);
continue Outer; }
} B. int i = 3;
} while (i) {
} System.out.println("i is "
.‫خطأ أثناء الترجمة عند السطر الثامن‬.1 + i);
: ‫يطبع‬.2 }
I: 2
I: 3 C. int j = 0;
I: 4 for (int k = 0, j + k != 10; j++,
:‫يطبع‬.3 k++)
I: 2 System.out.println("j=" + j +
.‫خطأ أثناء التنفيذ‬.4 ", k=" + k);
D. int j = 0;
:‫ماذا يطبع الكود التالي‬-1 loop: do {
boolean i = true; System.out.println("j=" + j+
boolean j = false; +);
short k = 10; if (j == 3)
if ( (k == 10) && (j = true)) continue loop;
k--; } while (j < 10);
if ( (i = false) || (k == 9))
k--; :‫ما هي نتيجة تنفيذ الكود التالي‬-1
k--; int x = 0, y = 4, z = 5;
System.out.println("k=" + k); if (x > 2)
if (y < 5)
A. 10 System.out.println("message
B. 7 one");
C. 8 else
D. 9 System.out.println("message
‫ما هو السطر البرمجي الذي يجب وضعه‬-1 two");
‫في السطر الثامن للمججرور علججى عناصججر‬ else if (z > 5)
:‫المصفوفة‬ System.out.println("message
class RevQTwo{ three");
static int[] myArray = new else
int[3]; System.out.println("message
public static void main(String [] four");
args) {
myArray[0]=1; .message one ‫يطبع‬.1
myArray[1]=2; .message two ‫يطبع‬.2
myArray[2]=3; .message three ‫يطبع‬.3
…………………………………. .message four ‫يطبع‬.4
System.out.print(i);
} :‫ ما هي نتيجة تنفيذ الكود التالي‬-1
} int j = 2;
A. for(int[] i : myArray) switch (j) {
B. for(int i : myArray) case 2:
C. for(myArray : int i)
25
System.out.println("value is C. long
two"); D. float
case 2 + 1: E. char
System.out.println("value is F. String
three"); :‫ما نتيجة تنفيذ الكود التالي‬-1
break;
default: public class LogicTest{
System.out.println("value is " + public static void main(String[]
j); args) {
break; int i = 5;
} int j = 10;
.value is two ‫يطبع‬.1 int k = 15;
:‫يطبع‬.2 if ( (i < j) || ( k-- > j) )
value is two System.out.println
value is three ("First if, value of k: " +
value is " + j k);
.‫خطأ أثناء الترجمة عند السطر الخامس‬.3 if ( (i > j) && ( --k < j) )
:‫يطبع‬.4 System.out.println
value is two ("Second if, value of k: "
value is three + k);
value is " + j System.out.println
("Out of if, k:" + k);
‫ مصججفوفة عناصججرها‬salaries ‫ إذا كججانت‬-1 }
‫ ما هي العبارة الصججحيحة‬،float ‫من نمط‬ }
:‫للمرور على عناصر المصفوفة‬ A. First if, value of k: 14
A. for (float f:salaries) Out of if, k: 13
B. for (int i:salaries) B. First if, value of k: 15
C. for (float f::salaries) Out of if, k: 14
D. for (int i::salaries) C. First if, value of k: 15
Out of if, k: 13
:‫ ما هي العبارات الصحيحة‬-1 D. First if, value of k: 15
A. for (int i=0, j=1; i<10; i++, j++) Out of if, k: 15
B. for (int i=0, j=1;; i++, j++)
C. for (int i=0, float j=1; ; i++, j++) :‫ما هي نتيجة تنفيذ الكود التالي‬-2
D. for (String s = ""; s.length()<10; public class LogicTest{
s += '!') public static void main(String[]
:‫ ما هي العبارات الصحيحة‬-1 args) {
A. while (int a = 0) { /* whatever int i = 5;
*/ } int j = 10;
B. while (int a == 0) { /* whatever int k = 15;
*/ } if ( (i < j) || ( k-- > j) )
C. do { /* whatever */ } System.out.println
while (int a = 0) ("First if, value of k: " + k);
D. do { /* whatever */ } if ( (i < j) && ( --k < j) )
while (int a == 0) System.out.println
E. for (int a==0; a<100; a++) ("Second if, value of k: " +
{ /* whatever */ } k);
F. ‫كل العبارات السابقة خاطئة‬ System.out.println("Out of if, k:" +
k);
‫ما هي أنماط البيانات الصججحيحة لوسججيط‬-1 }
:switch ‫عبارة‬ }
A. byte A. First if, value of k: 14
B. int Out of if, k: 13
26
B. First if, value of k: 15
Out of if, k: 14 A. i = 6 and j= 5
C. First if, value of k: 15 B. i = 5 and j= 5
Out of if, k: 13 C. i = 6 and j= 4
D. i = 5 and j= 6
‫ما هي السججطر الججتي سججتكون جججزء مججن‬-3 E. i = 6 and j= 6
:‫نتيجة التنفيذ‬
for (int i = 0; i < 2; i++) { ‫أي من السطر التالية ستعطي خطأ أثناء‬-1
for ( int j = 1; j < 4; j++) { :‫الترجمة‬
if ( i == j ) { A. int i=0;
continue; if(i) {
} System.out.println("Hello");
System.out.println ( " i = " + i + " j = }
" + j );
}} B. boolean b=true;
A. i = 0 j = 1 boolean b2=true;
B. i = 0 j = 2 if(b==b2)
C. i = 0 j = 3 System.out.println("So true");
D. i = 1 j = 1
E. i = 1 j = 2 C. int i=1;
F. i = 1 j = 3 int j=2;
if(i==1|| j==2)
:‫ماذا يطبع البرنامج التالي‬-4 System.out.println("OK");
public class test ( D. int i=1;
private static int j = 0; int j=2;
private static boolean if(i==1 &| j==2)
methodB(int k) { System.out.println("OK");
j += k;
return true; :‫ما هي نتيجة تنفيذ الصف التالي‬-1
} public class Ombersley{
public static void methodA(int i) { public static void main(String
boolean b: argv[]){
b = i < 10 | methodB (4); boolean b1 = true;
b = i < 10 || methodB (8); if((b1 ==true) || place(true))
System.out.println("Hello
} Crowle");
public static void main (String }
args[] ) public static boolean
{ place(boolean location){
methodA (0); if(location==true)
System.out.println(j); System.out.println("Borcetshire"
} );
} System.out.println("Powick");
. 0 ‫يطبع‬.1 return true;
. 4 ‫يطبع‬.2 }
. 8 ‫يطبع‬.3 }
. 12 ‫يطبع‬.4 ‫خطأ أثناء الترجمة‬.1
Hello Crowle ‫ يطبع‬.2
:‫ما هي قيمة )( بعد التنفيذ‬-1 ‫ يطبع‬.3
int i= 1, j= 10 ; Borcetshire
do { Hello Crowle
if (i++> --j) continue; Hello Crowle
} while (i<5); ‫ل يطبع شئء‬.4
27
Jcdddf-1
kfdfd-2

fddfd ‫لب‬

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

28

You might also like