أساسيات لغة جافا

42
ة غ ل ل ا ات ي س سا ا: ي ل ا ي ل م ا ي ه ا ف م ل ى ا عل رف ع ت ل ي ا ل# ل ا ص ف ل ا ا هذ هذف ي . ولات ح1 ت م ل ا . ات ان ي6 لبط ا ما ن ا . ات ي ل م ع ل ا م. حك1 ت ل ى ا نA ب . ات وف ف ص م ل ا ف ص ل اString . ف ص ل اBufferString . 1

Upload: dalia

Post on 15-Jun-2015

1.050 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: أساسيات لغة جافا

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

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

1

Page 2: أساسيات لغة جافا

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

Data_type var_Name;Data_Type var_Name = init_value;

أنماط البيانات:1-1 Primitiveتملك جافا نوعين من أنماط البيانات، النوع األول هو األنماط البسيطة )

Type(عNNو المراجNNاني هNNوالث )ReferenceفوفاتNNفوف والمصNNل الصNNتي تمثNNوال ) والواجهات، حيث قيمة المتحول من نمNNط مرجNNع هي عنNNوان في الNNذاكرة للمكNNان

الذي يتم فيه تخزين القيمة أو القيم الفعلية. تستخدم األنماط البسيطة لتخزين قيمة واحدة )رقميNNة، محNNرف، قيمNNة منطقيNNة(،

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

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

الحجم)نمط البياناتbits)

أكبر قيمةأصغر قيمةالقيمة االبتدائية

Boolean1FalsefalseTrueByte80-128-(2)7127(27-

1)Short160-215215-1Char16\u000\(u000()

0)\uffff

Int320-231231-1Long640L-263263-1Float320.0f

Double640.0(1جدول)

أسماء المتحوالت:1-2يجب اتباع القواعد التالية أثناء تسمية المتحوالت:

( يجب أن يبدأ بحرفA-Z, a-z أو )Unicode Character.)$( أو )_( أو يتبع الحرف األول تسلسل من األحرف أو األرقام أوUnicodeCharacter

أو )_( أو )$(.( يجب أن ال يكون االسم كلمة محجوزةconst, goto.أو كلمة مفتاحية )

أمثلة: int \u0046x=8; int _fd=7; char $f; boolean foo; int bid3_4h;

float 3_node;

2

معتمثل األعداد الصحيحة إشارة

تمثل األعداد الحقيقيةمع إشارة

معرفات صالحة

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

Page 3: أساسيات لغة جافا

short !theCase;

مالحظة: هما متحوالن مختلفان.Radius و radiusجافا حساسة لحالة األحرف، أي أن

1-3Literals: وهي عبارة عن قيمNNة تعطى لمتحNNول، أي تظهNNر في الطNNرف اليميNNني للمسNNاواة،

ويمكن أن تسند إلى متحول من أي نمط بسيط، كما هو آتي.Boolean Literals:

وهي عبارة عن القيم المسNNموحة الNNتي يمكن نسNNبها إلى متحNNول بوليNNاني،.true و falseوهي عبارة عن

boolean isBig=true. boolean isLittle=false;

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

char c= 'w'; char c1= '\u0019';

Integral Literals: وهي عبNNارة عن قيمNNة تنسNNب إلى متحNNول رقمي، ويمكن أن تكNNون هNNذه القيمة ممثلة بالنظام العشري أو النظام الثماني أو النظام الست عشNNري، حيث النظام االفتراضي هو عبارة عن النظام العشري، ولتحديNNد قيمNNة أنهNNا

(، أما لتحديد قيمة انها في النظام0ممثلة بالنظام الثماني نسبقها بالصفر )( NN0الست عشري يجب أن تسبق بx( أو )0X.)

مثال: يمكن تمثيلها بست طرق:28القيمة

28 034 0X1c 0X1C 0x1c 0x1C

مالحظة: يتم تمثيلintegral Literals بت، للتعامل معه على أنه32 على Z

long Literals 64 أي تمثيلها على( بت، نضيف الالحقة l, Lإلى ) نهاية القيمة.

اNة على أنهNة الرقيمNة القيمNتتم ترجمdouble أو floatرNإذا ظه ، في العبارة أي واحد مما يلي:

.1.414يحوي الفاصلة العشرية، مثل .1.4.23E+21، مثل e أو Eالحرف .2 مثNNلfloat، بالتNNالي تكNNون القيمNNة f أو FيحNNوي الالحقNNة .3

1.82f..234d، مثل d أو Dيحوي الالحقة .4

مالحظة: ، يعتNNبرf أو dأي قيمة تم تمثيلها بالشكل السابق بدون الالحقNNة

.doubleقيمة من نمط String Literals:

هي عبارة عن تتابع من األحرف، مثل:String s="java Fundamentals";

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

مثال:

3

Page 4: أساسيات لغة جافا

Class MyClass{

Member VariableDecleration

Public void aMethod )Method Parameter({………….

Local Variable Parameters……….Catch) Exception Handler Parameters({

}

}}

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-4هي عبارة عن المنطقة التي يمكن فيها استخدام المتحول.

يجب التمييز بين مجال المتحNNول وقابليNNة الرؤيNNة، حيث قابليNNة الرؤيNNة تطبNNق على األعضNاء البيانيNة، وتحNدد هNل يمكن اسNتخدام العضNو البيNاني خNارج الصNف الNذي

يحويها.أنواع المتحوالت حسب مجال المتحول:

.Member Variableمتحول عضو .1.Local Variableمتحول محلي .2.Method Parameterوسيط لطريقة .3.Exception Handler Parameterوسيط معالجة استثناء .4

( ما هي المنطقة التي يمكن فيها استخدام المتحول.1يبين الشكل )

(1الشكل)بالنسبة للمتحول العضو:

.يمكن أن يكون اسم العضو البياني بنفس اسم الصف.يمكن استخدامه ورؤيته في أي مكان في الصف.يتم تهيئته )إعطاؤه قيمة ابتدائية( بشكل أوتوماتيكي قبل استدعاء أي باني

بالنسبة للمتحوالت المحلية:.يمكن أن يكون له نفس اسم عضو بيانييجب تهيئته )إعطاؤه قيمة ابتدائية( بشكل صريح قبل استخدامه في أي

عبارة وإال سيعترض المترجم )خطأ أثناء الترجمة(. إذا كان المتحول هو عبارة عن مرجع، نعطيهnull.كقيمة ابتدائية

4

مجال األعضاء البيانية

مجال وسطاء الطريقة

مجال المتحول المحلي

مجال وسيط معالجةاالسثناء

Page 5: أساسيات لغة جافا

مثال:public String aMethod)int a( { String tmp; if)a >0( return "Postive"; return tmp; }

الثوابت )المتحوالت النهائية(:1-5

يمكن التصNNريح عن المتحNNول بحيث تصNNبح قيمتNNه ثابتNNة )أي غNNير قابNNل للتعNNديل(، كما هو موضح:finalباستخدام الكلمة المفتاحية

final int x=10; final int y; y=30;

بعد اآلن وإال سيعترض المترجم.y أو xحيث ال يمكن تغير قيمة المتحول

final int y=10;y=30;

:Operatorsالعمليات -2توفر جافا العديد من العمليات، وهي:

:Unary Operatorالعمليات األحادية -1معامالت الزيادة والنقصان)-- ,++(:-1

++op( زيادة المعامل :op.بمقدار واحد ومن ثم تقييمه )op++(تقييم المعامل :op( ومن ثم زيادة قيمته بمقدار )1.)--op( تقييم المعامل :op).من بعد إنقاص قيمته بمقدار واحد op( تقييم المعامل :--op.ومن ثم إنقاص قيمته بمقدار واحد )

مثال:x=5; y=0;y=x++;

(.x=6, y=5فتكون النتيجة )x=5; y=0;y=++x;

(.x=6, y=6فتكون النتيجة )معامالت)-()+(:-2

ليس لها أي تأثير.+:-12- :-

النفي)!(:-3تعكس قيمة متحول بولياني.

المتمم)~(:-4 (، ويطبق فقNNط على األنمNNاط0 يصبح 1، 1 يصبح 0تعكس بتات تعبير رقمي )

الصحيحة.التحويل القصري)(:-5

لتحويل نمط بيانات معامل إلى آخر بشكل صريح، كما في المثال التالي:byte x = 1;byte y = 2;byte z = x/y;

5

خطأ أثناء الترجمة، بيبن أنه يجب إعطاء قيمة ابتدائيةtmpالمتحول

خطأ أثناء الترجمة ال يمكن تغير قيمة الثابت بعد

إعطاؤه القيمة

Page 6: أساسيات لغة جافا

arithmeticينتج خطأ أثناء الترجمة عند السطر الثNNالث حسNNب promotion ©(، ألنه نمط بيانات الطرف اليميNNني هNNو ، وال يمكن نسNNبint)المشروحة الحقا

، لNNذلك يجب قصNNر الطNNرفbyte إلى متحNNول من نمNNط intقيمNNة من نمNNط ، أي على الشكل:byteاليساري إلى

byte x = 1;byte y = 2;byte z = )byte( )x/y(;

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

مثال:System.out.println)1+2+"3"(;

.33تطبع System.out.println)"1"+2+3(;

.123تطبع

،ArithmeticException يNNرمي اسNNتثناء (0)قسNNمة عNNدد صNNحيح على -3.بينما يعطي قسمة عدد حقيقي على صفر االنهاية)-∞ أو +∞(

تستخدم العمليNة )%( للحصNول على بNاقي القسNمة، تكNون إشNارة نNاتج-4 العملية )%( حسب إشNNارة المعامNNل األول لهNNذه العمليNNة، وعنNNد حسNNاببNNNNNاقي قسNNNNNمة عNNNNNدد صNNNNNحيح على الصNNNNNفر يتم رمي اسNNNNNتثناء )

ArithmeticExceptionفر هيNNأما باقي قسمة عدد حقيقي على الص ،) الالنهاية.مثال:

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

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

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

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

,float الصفين المغلفين لألنماط البسيطة Float, Doubleتحوي كل من الصفين double(على ثابتين، الثابت األول يمثل الالنهاية InfinityةNNفيمكن أن تكون نتيج،)

العمليات الحسابية على المعامالت الحقيقية غير محددة أي الالنهاية )مثل القسNNمة (فيمثNNل القيمNNة الغNNير موجNNودة، فيمكن أن الNaNعلى صفر(، أما الثابت الثNNاني )

يكون هناك باألصل نتيجة للعملية الحسابية )مثل الجذر التربيعي لعدد سالب(، ( نستخدم الصيغة التالية:NaNمن أجل مقارنة قيمة مع الثابت)

Float.IsNaN)x(;

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

x==Double.POSITIVE_INFINITYمالحظة:

6

2يطبع

2يطبع

2يطبع -

2يطبع -

arithmetic addition

string concatenation

Page 7: أساسيات لغة جافا

عندما يكون نمط البيانNNات لمعNNاملي العمليNNة الثنائيNNة مختلفين أو من نمNNط بيانNNات.int( أي )intأصغر حجمأ من ) char, byte, shortترجمNNيحول المNNعندها س ،)

نمط البيانات ألحد المعاملين إلى نمNNط بيانNNات المعامNNل اآلخNNر أو سNNيقوم بتحويNNلنمط البيانات للمعاملين إلى نمط آخر مختلف، كما هو موضح فيما يلي:

إذا كان نمط بيانات المعاملين أصغر من النمطintل كالNNعندها سيتم تحوي ، .intالمعاملين إلى

لNNاملين على األقNNد المعNNات أحNNط بيانNNان نمNNإذا كdoubleلNNتم تحويNNس ، .doubleالمعامل اآلخر إلى

األقل على إذا كان نمط بيانات أحد المعاملينfloat© ، إضافة إال أنه ليس أيا.float، عندها سيتم تحويل المعامل اآلخر إلى doubleمنهما من نمط

األقل على إذا كان نمط بيانات أحد المعاملينlong© ، إضافة إال أنه ليس أياfloatمنهما من نمط ) ,doubleر إلىNNل اآلخNNعندها سيتم تحويل المعام ،)

long. NNوهذا ما يسمى بArithmetic Promotion.

مثال:byte b = 5;int i = 3;double d = b / i;System.out.println)d(;

© تحويNNل ) ، ومن ثم تنفNNذ العمليNNةint( إلى bهنا في السطر الثالث سيتم أوال© يتم تحويNNل النتيجNNة إلىint( من نمط 1( وينتج واحد )b/iالحسابية ) ، أخNNيرا

(.1.0، لذلك يطبع السطر األخير القيمة )doubleنمط :Shift Operatorعمليات اإلزاحة-3

<< إزاحة إلى اليسار:-1op1 >> op2 إزاحة بتات : op1 إلى اليسار بمقدار op2)ويتم)تحذف ،

إضافة أصفار إلى اليمين، ويتم االحتفاظ ببت األكثر أهمية، وتصبح القيمNNةالجديدة كما يلي:

New_Value=Old_Value * 2^xهو البتات التي أزيحت.( x)حيث

1011001101100111

0001011001101100

>> إزاحة إلى اليمين مع أخذ اإلشارة بعين االعتبار.-2op1 << op2 : إزاحة يتاتop1 إلى اليمين بمقدار op2راءNNد إجNNعن ،

عملية اإلزاحNNة مNNع أخNNذ اإلشNارة بعين االعتبNNار تأخNNذ البتNNات الداخلNة مناليسار قيمة البت اليسارية.

1011001101100111

7

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

هذه البتات التي تمتإزاحتها وحذفها

a

a>>

a

هذه البتات التي تمتإزاحتها وحذفها

Page 8: أساسيات لغة جافا

1001101100111000

تصبح القيمة:New_Value=old_Value/2^x

( هي عدد البتات التي تم إزاحتها.xحيث )>>> إزاحة إلى اليمين بدون أخذ اإلشارة:-3

Op1 <<< op2 إزاحة بتات :op1 إلى اليمين بمقدار op2بدون إشارة حيث تأخذ البتات الداخلة من اليسار قيمة الصفر.

1011001101100111

1001101100111111

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

:Compression Operatorعمليات المقارنة-4 تعيد كل عميات المقارنة قيمة منطقية، ويوجد في جافا العديد من عمليات

المقارنة وهي:: وتطبق فقط على األنماط الرقمية.>, >=, <=, <-12-istanceofرض معين، أيNNه غNNذي ينتمي إليNNوتستخدم لمعرفة الصف ال :

يجب أن يكون المعامل اليساري هو مرجع واليميني هNNو عبNNارة عن صNNفأو واجهة أو نمط مصفوفة.

في الحاالت التالي:true القيمة instanceofتعيد ود فيNNف الموجNNرض من الصNNو غNNاري هNNل اليسNNان المعامNNإذا ك

الطرف اليميني أو من صف ابن له.رفNNود في الطNNرض الموجNNأ من الغNNذي أنشNNف الNNان الصNNإذا ك

اليساري يحقق الواجهة الموجودة في الطرف اليمني.اريNNرف اليسNNفوفة والطNNع مصNNإذا كان الطرف اليساري هو مرج

نمط مصفوفة.مثال:

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(;

8

a

a<<

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

a<<<

هذه البتات التي تمتإزاحتها وحذفها

Page 9: أساسيات لغة جافا

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 {}

مالحظة:( ارةNNNانت العبNNNإذا كx instanceof Yة منNNNير مقبولNNNغ )

Yالمترجم)خطأ أثناء الترجمة(، عندها العبNNارة ) y=)Y( xيرNNغ ) مسموحة من قبل المترجم.

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

( إذا كانت العبارةx instanceof y صحيحة وتعيد )trueعندها ، ( صحيحة.x )Y(=Y yالعبارة ))

3-:=! ,==يستخدم مع األنماط البسيطة.-1 (equalsال يمكن استخدامها مع األغراض وإنما نستخدم الطريقNNة )-2

بعد إعادة تحقيقها كما تريد في الصفوف المناسبة..String Literalsيمكن استخدام )==( لمقارنة -3

:Bit wise Operationالعمليات الثنائية -5 ,byte, short, charوهي &, ^, |، وتطبق على المعامالت المنطقية والصحيحة)

int, long.)

BooleanالقيمةLiterals

1True0false

:and( نتيجة عملية 3يوضح الجدول )

Op1 & Op2

Op2Op1

9

Page 10: أساسيات لغة جافا

000010001111

(3الجدول):OR( نتيجة عملية 4يوضح الجدول )

Op1 | Op2Op2Op1

000110101111

(4جدول):XOR( نتيجة عملية 5يوضح الجدول )

Op1 | Op2Op2Op1

000110101111

(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(; 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((; }}

:Logical Operatorالعمليات المنطقية)الشرطية(-6وهي ||, &&.

تطبق فقط على المعامالت المنطقية.-1 ، ألنNNه في بعض الحNNاالت ال يتم تفNييمShort-Circuitتسمى هذه العمليات -2

المعامل الثاني، كما هو موضح فيما يلي:op1 || op2

في حال كانت قيمة أحد المعاملينtrueتكون النتيجة النهائية للتعبير هي ( هيop1، فإذا كانت نتيجNNة تقNNييم المعامNNل األول )trueعلى األقل هي

true ارة هيNNة للعبNNة النهائيNNإن النتيجNNف ،trueةNNر عن قيمNNبغض النظ المعامل الثاني، لذلك ال يقيم المعامل الثاني، أمNNا إذا كNNانت نتيجNNة تقNNييم

فيجب تقييم المعامل الثاني.falseالمعامل األول هي

10

Page 11: أساسيات لغة جافا

op1 && op2 في حNNال كNNانت قيمNNة أحNNدfalseتكNNون النتيجNNة النهائيNNة للتعبNNير هي

، فإذا كانت نتيجة تقNييم المعامNNل األول )falseالمعاملين على األقل هي op1 هي )false فإن النتيجة النهائية للعبارة هي ،falseر عنNNبغض النظ

قيمة المعامل الثاني، لذلك ال يقيم المعامNNل الثNNاني، أمNNا إذا كNNانت نتيجNNة فيجب تقييم المعامل الثاني.trueتقييم المعامل األول هي

7- Nالشكل المختصر لif )Ternary Operator(:الشكل العام:

a= x? b:c( هي معامل منطقي.xيجب أن يكون المعامل )-1 وإال يتمtrue( x( إذا كانت قيمة المعامل )a( إلى المعامل )bيتم نسب قيمة )-2

(.a( إلى )cنسب قيمة )©، واحد منهما فقط ستم تقييمه.b, cال يتم تقييم )-3 ( معا

:Assignment Operationعمليات اإلسناد -8( عمليات اإلسناد:6يوضح الجدول )

التقييماالستخدامالعملية

+=op1+=op2op1=op1+op2=-op1-=op2op1=op1-op2=*op1*=op2op1=op1*op2=/op1/=op2op1=op1/op2=%op1%=op2op1=op1%op2=|op1|=op2op1=op1|op2=&op1&=op2op1=op1&op2=^op1^=op2op1=op1^op2

=<<op1>>=op2op1=op1>>op2=>>op1<<=op2op1=op1<<op2

=>>>op1<<<=op2op1=op1<<<op2(6جدول)

باإلضافة إلى عمليNNات اإلسNNناد السNNابقة، فNNإن العمليNNة )=( هي عبNNارة عن عمليNNةإسناد ولها قيمة، كما هو موضح فيما يلي:

a=b=c=0 (، وتصبح العبNNارة على الشNNكل0( ويصبح قيمة المساواة هي )c=0أوال يتم تنفيذ )

( وتنسNNب0( وتصبح قيمNNة المسNNاواة )b=0(، ومن ثم يتم تنفيذ )a=b=0التالي )(.aإلى المعامل)

مالحظة:إذا كان لدينا المثال التالي:

byte b=10;//b=b+10;b+=10; أما السطر األول والسطر الثاني يتم ترجمتها بشكل صNNحيح، ألن عمليNNات اإلسNNناد

(.byte( إلى النمط )int)وهنا =, +=( تسبب قصر ضمني من النمط )مثال:

class PackingCharacters { public static void main)String[] args( { char letterA = 'A'; char letterB = 'B'; char letterC = 'C';

11

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

Page 12: أساسيات لغة جافا

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من اليسار إلى اليمين

من اليسار إلى اليمين==, !=من اليسار إلى اليمين&من اليسار إلى اليمين^من اليسار إلى اليمين|

من اليسار إلى اليمين&&من اليسار إلى اليمين||من اليمين إلى اليسار?:

,=>> ,=<< ,=& ,=^ ,=| ,=/ ,=* ,=- ,=+ ,= =>>>

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

مثال:class Precedence { public static void main)String args[]( { int i = 0; i = i++; i = i++; i = i++; System.out.println)i(; int array[] = new int[5]; int index = 0; array[index] = index = 3;

12

( ألن العملية )=( لها0يطبع )األولوية األقل

يأخذ العنصر األول القيمة )( وليس العنصر الرابع3

Page 13: أساسيات لغة جافا

for )int c = 0; c < array.length; i++( System.out.println)array[c](; System.out.println)"index: " + index(;

}}

مالحظة:© فحص مجNNال نمNNط بيانNNات القيمNNة الموجNNودة في عنNNد نسNNب قيمNNة إلى متحNNول، يتم أوال

الطرف اليساري إذا كانت مقبولة أو ال )من قبل المترجم(. char c=3;

© قيمة صحيحةnumeric Literalsألن هي افتراضيا int a=3; char d=a;

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

char e=-1; (، حيث نمNNطcharخطNNأ اثنNNاء الترجمNNة ألن القيمNNة ال تنتمي إلى مجNNال نمNNط البيانNNات )

( هو نمط صحيح بدون إشارة.charالبيانات ) float f=1.3;

.double( يتم ترجمتها على أنها 1.3خطأ أثناء الترجمة، ألن القيمة ) float f1=1/3;

.int( هي من نمط 1/3العبارة صحيحة، ألن القيمة ) float f2=1.0/3.0;

Nخطأ أثناء الترجمة، ألن الطرف اليميني يتم تقييمه كdouble.

عند نسب متحول نهائي إلى متحول، إذا كان نمط بيانات المتحول النهائي أوسع من نمNNط بيانات المتحول وكانت قيمة المتحول النهائي ضNNمن مجNNال نمNNط بيانNNات المتحNNول عنNNدها

سيتم تحويل ضمني للمتحول النهائي:byte b;final int a=10;b=a;

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

final int x=a; b=x;

العبارة صحيحة. int y; final int z=y; b=z;

.yخطأ أثناء الترجمة عند السطر الثاني والثالي، ألنه لم يتم تحديد قيمة المتحول بنى التحكم:-3المصفوفات:-4

ما هي المصفوفة:4-1© من عناصر ذات نمNNط بيانNNات واحNNد، وقNNدهي © ثابتا بنية يمكن أن تحتوي على عددا

تكون هذه العناصر إما من نمط بسيط أو مراجع، ويمكن الوصNNول إلى كNNل عنصNNر© حتى ولNNو بواسطة دليل يمثل موقع العنص في المصفوفة، وتعتبر المصفوفة غرضا

كانت محتوياتها من نمط بسيط.إنشاء المصفوفة:4-2

©، أي: من أجل إنشاء مصفوفة البد من التصريح عنها أوالالتصريح عن مصفوفة:-1

13

(3يطبع )

Page 14: أساسيات لغة جافا

s

s

WelCome

To

Java

الشكل العام للتصريح عن متحول من نمط مصفوفة: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](; }}

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

(:2مثال)class TestObjectArray { public static void main)String args[]( { String[] x=new String[3]; System.out.println)x[2](; }}

.(nullيترجم البرنامج السبابق بدون أخطاء ويطبع القيمة )أي:

© بإسناد قيم ابتدائية لعناصر المصفوفة، حيث تستخدم القيمة ) تقوم جافا تلقائيا ( مNNع0.0( لعناصNNر المصNNفوفة من النمNNط الصNNحيح بينمNNا تسNNتخدم القيمNNة )0

( مNNع المصNNفوفة منfalseعناصNNر المصNNفوفة من النمNNط الحقيقي والقيمNNة )( مع األغراض.nullالنمط البولياني والقيمة )

الفرق بين مصفوفة األنماط البسيطة ومصفوفة األغراض:4-3مصفوفة األغراض:-1

String s[];

s=new String[3];

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

14

s

Page 15: أساسيات لغة جافا

2

2

2

مصفوفة النمط البسيط:-2int a[];

a= new int[3];

for)int i=0; i<a.length; a[i++]=2( ;

مالحظات:ةNاء القيم االبتدائيNفوفة وإعطNيمكن اختصار خطوات التصريح وإنشاء المص

بخطوة واحدة على الشكل التالي:int a[]= {2, 5, 6};int a[]= new int[]{2, 5, 6};

.new ال نحدد طول المصفوفة بعد المعامل نستخدمlength.للحصول على طول المصفوفة مNNل اسNNد أو قبNNات أو بعNNط البيانNNيمكن أن نضع األقواس المربعة [] بعد نم

المصفوفة.ولNNاني أو متحNNو بيNNانت عضNNواء© كNNفوفة )سNNبعد التصريح وحجز مكان لمص

محلي(، فإن جافا ستقوم بتهيئة عناصر المصفوفة بشكل أوتوماتيكي وذلNك.)© بإعطائها القيمة االفتراضية للنمط المقابل )كما ذكر سابقا

)ذاكرةNNا في الNNان لهNNز مكNNفوفة )ولم يحجNNريح عن مصNNط التصNNإذا تم فق وكانت المصفوفة هي عبارة عن عضو بياني في الصNNف فسNNيأخذ المتحNNول

، بينمNNا ال تعطى المصNNفوفة المحليNNةnullالمعNNبر عن المصNNفوفة القيمNNة ، كما هو موضح في المثال التالي:nullالقيمة

class TestInitValue { static int a[]; static int b[] = { 1, 2, 4}; public static void main)String args[]( { //System.out.print)a[0](; System.out.println)b(; System.out.println)b[2](; 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"};

15

a

a

a

خطأ أثناء التنفيذNullPointerExceptio

nnullتطبع

خطأ أثناء الترجمة يبين أنه يجبإعطاء المتحول قيمة ابتدائية

Page 16: أساسيات لغة جافا

4 4 4

4 4 4

3 5

5

3 5 6

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"}; for )int j = 0; j < s.length ; j++( if )s[j].compareTo)s[j + 1]( == 0( { System.out.println)s[j](; break; } }}

مصفوفة المصفوفات:4-4.© هي عبارة عن مصفوفة كل عنصر فيها عبارة عن مصفوفة أيضا

أمثلة: إذا كان لدينا ثالثة طالب يخضعون المتحانات في نهاية كل أسبوع، بالتالي يكون-1

عالماتهم في نهاية الشهر ممثلة على الشكل التالي:int[][] grade={{99,42,74,85} , {90,30,40,60} ,{91,83,60,70} };

لحجNNز مكNNان في للمصNNفوفة في الNNذاكرة علىnewيمكن استعمال المعامNNل -2الشكل التالي:

int[][] x=new int[2][3]; for)int i=0;i<x.length;i++( for)int j=0;j<x[i].length;j++( x[i][j]=4;

x.length. للحصول على عدد األسطر :x[i].length.للحصول على عدد العناصر في كل مصفوفة جزئية :x[i][j].للوصول إلى العنصر عند سطر معين وعمود معين :

ليس من الضروري أن يكون للمصفوفات الجزئية نفس الطول، كما هو موضح-3فيما يلي:

int x[][]= {{3,5,6}, {3,5} , {6}}

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

16

x

x

1

Page 17: أساسيات لغة جافا

1 3 3 11 4 6 6 1

class pascal { public static void main)String args[]( { int n = Integer.parseInt)JOptionPane.showInputDialog)"Enter Number"((; int[][] pascal = new int[n][]; 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};

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

:Flow Controlبنى التحكم -5:Selection Statementsعبارات إتخاذ القرار -1

:ifعبارة -1:ifالشكل العام لتعليمة

if )<expression1>({// if <expression1> returns true, statements in this block are

executed.}

17

11121

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

بعد اسم المصفوفةأو

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

Page 18: أساسيات لغة جافا

[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 expressionsin all the else if statements were false, then the statements in this block will be executed.}

] أوfalse( تعبNNير منطقي أي أن قيمتNNه إمNNا expressionيجب أن يكون )

true( تخدامNNويجب اس ،y==x تينNNة قيمNNلمقارن )وليس( y=xإال في ) ,xحال كNNانت المتحNNولين ) yيعطيNNولكن س( يينNNولين منطقNNا متحNNهم )

( متحولين منx, yنتيجة خاطئة فقط بدون اعتراض المترجم(، إذا كان ) نمط مغاير للنمط المنطقي سيعترض المترجم )خطأ أثناء الترجمة(، كمNNا

هو موضح في المثال التالي:boolean b1 = false;boolean b2 = true;if)b1=b2( System.out.println)"The value of b1: " + b1(;

:switchعبارة -2:switchالشكل العام لعبارة

switch)<>({case value1:statementsbreak;

case value2:statementsbreak;

……..default:statementsbreak;

}

مالحظات: آخNNر جNNزء في عبNNارةdefaultليس من الضNNروري أن تكNNون عبNNارة -1

switch. فسيتم تنفيNNذها وإذا كNNانتdefaultأثناء التنفيذ، إذا تم مصادفة جزء -2

، فسNNيتم تنفيNNذ كNNل التعليمNNات الموجNNودة فيbreakال تحوي عبNNارة حNNتى ولNNو كNNان قيمNNةdefault الموجNNودة بعNNد عبNNارة caseعبارات

.false( هي exp=valueالشرط ) ,int, short من األنماط التالية switchيجب أن يكون وسيط عبارة -3

char, byte, enum. من نمط بيانات رقمي.caseيجب أن يكون وسيط عبارة -4

18

التعليمات التي يجب أن تنفذفي حال كان قيمة الشرط )

exp=value1 هي )(true)

التعليمات التي يجب أن تنفذ فيحال كان قيمة الشرط )

exp=value2 هي )(true)

التعليمات التي يجب أن تنفذ في ( مغايرة لكلexpحال كان قيمة )

.caseالقيم الموجود في عبارات

Page 19: أساسيات لغة جافا

داخل األقNNواس، كمNNا هNNوswitchال يمكن التصريح عن متحول عبارة -5موضح فيما يلي:

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: 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."(; }}

، فإنه سيتم تنفيذtrue( هي exp=valueعندما تكون قيمة الشرط )-6 تحNNويcase، إذا كNNانت عبNNارة caseالتعليمات الموجودة في عبNNارة

سينتقل التحكم إلى التعليمة الموجودة بعد عبارةbreakعلى تعليمة switch ةNNوي على تعليمNNانت ال تحتNNا إذا كNNأم ،breakذNNتم تنفيNNس ،

باإلضNNNافة إلى التعليمNNNاتcaseالتعليمNNNات الموجNNNودة في عبNNNارة أوbreak التاليNNة حNNتى تصNNادف تعليمNNة caseالموجودة في عبارات

.switchتنتهي تعليمة تأكيــد:

أو أي وسيط ثNNاني منint من نمط switchيجب أن يكون وسيط عبارة ,charنمNNط short, byte, enumطNNارة من نمNNيط عبNNان وسNNإذا ك ،

double, floatيطNNة وسNNون قيمNNأ، ويجب أن يكNNسيعطي المترجم خط case ةNNول تعليمNNات متحNNط بيانNNال نمNNمن مجNNض switchيعطيNNوإال س

المترجم خطأ، كما هو موضح فيما يلي:byte i=2;switch )i({case 3:

19

Page 20: أساسيات لغة جافا

System.out.println)"Three"(; break; case 130: System.out.println)"One Thirty"(; break; }

:Iteration Statementsعبارات التكرار -2:whileعبارة -1

هو:whileالشكل العام لعبارة while ) <expression> ( {// if the <expression> is true,// execute the statements in this block.// After the execution, go back to check the condition again.}

:do-Whileعبارة -2:do-Whileالشكل العام لعبارة

do {// Execute the statements in this block.} while ) <expression> (;

مالحظة: مرة واحدة على األقNNلdo-Whileيتم تنفيذ التعليمات الموجودة ضمن كتلة

حتى ولو كان الشNNرط غNNير محقNNق )ألنNNه أوال يتم تنفيNNذ التعليمNNات ثم فحصالشرط(.

:forعبارة -3:forالشكل العام لعبارة

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

<statement.تستخدم لتهيئة متحول الحلقة :> <test شرط منطقية قيمته إما :>true أو false.<expressionاتNNذ التعليمNNد تنفيNNرة بعNNذها مباشNNيتم تنفي :>

(test ومن ثم سNNيتم فحص الشNNرط )forالموجNNودة في حلقNNة ©، إذا كNNNانت قيمNNNة الشNNNرط يتم تنفيNNNذ التعليمNNNاتtrueمجNNNددا

وإال سينتقل التحكم إلى التعليمات الNNتي بعNNدforالموجودة ضمن .forتعليمة

مالحظات:إذا تم التصريح عم متحول الحلقة وتهيئته خارج خارج الحلقة

يجب أن يعطى قيمة ابتدائية داخل الحلقة:int i=0;for)i; i<5; i++(

بينما المثال التالي صحيح:for)i=i+1; i<5; i++(

ونNNNيمكن أن تك <statement ( © -non<عبNNNارتي إسNNNناد معNNNاdeclarative expressionsح فيNNا موضNNلة، كمNNا فاصNNبينهم )

المثال التالي:

20

خطأ أثناء الترجمة، يجب أن تكون القيمة ضمن مجال نمط بيانات

switchمتحول تعليمة

يجب أن تكون قيمة التعبير(expression هي )true

falseأو

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

Page 21: أساسيات لغة جافا

for) i++, j++ ; i+j < 5 ; i++(© )statement أن تكNNون >ال يمكنبينما < عبNNارتي تصNNريح معNا

declarative statement( ريحNNNارات تصNNNزيج من عبNNNأو م )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."(;}

بينما التعليمة التالية تعطي خطأ أثناء الترجمة:for)( {System.out.println )"Round and round we go for ever."(;}

:for-eachعبارة -4 ،Collectionتستخدم للمرور على عناصNNر مصNNفوفة أو أي من نNNوع من

:for-eachوالشكل العام لعبارة for )<variable> : <collection>( {// the block code}

© يتم إسNNNناد في المNNNرورCollection العنصNNNر األول من 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تعليمات التفريع -3:breakعبارة -1

تستعمل هذه التعليمة لكسر حلقة وانتقال التحكم إل التعليمة الموجNNودة.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=0i=3 and j=1i=3 and j=2

21

Page 22: أساسيات لغة جافا

i=3 and j=3i=2 and j=0i=2 and j=1i=2 and j=2i=1 and j=0i=1 and j=1

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

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;}}

ولها الخرج التالي:i=3 and j=0i=3 and j=1i=3 and j=2i=3 and j=3

، باإلضNNافة إلىbreakأي يتم كسر الحلقة الداخلية الموجودة فيها تعليمة NNالحلقة الخارجية المعلمة بOuterLoop

:continueعبارة -2 ، يتم كسر المرور الحالي للحلقNNة فقNNط ويتمcontinueعند تنفيذ تعليمة

تنفيذ المرور التالي للحلقة )أي فقط يتم تجاهل التعليمات الموجودة بعNNد في المرور الحالي(.continueتعليمة

مالحظة: في حلقNNةcontinueيتم اختبNNار الشNNرط البوليNNاني بعNNد تنفيNNذ تعليمNNة

while, do-while<( بينما يتم ننفيذ ،expressionةNNبعد تنفيذ تعليم )> 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 0The value of i is 1The value of i is 2The value of i is 4

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

continue <indentifier>;مثال:

OuterLoop: for ) int i = 3; i >0; i-- ( {for )int j = 0; j<4; j = j + 1( {

22

Page 23: أساسيات لغة جافا

System.out.println ) "i=" + i + " and j=" + j(;if ) i == j ( continue OuterLoop;

}}

والنتيجة هي:i=3 and j=0i=3 and j=1i=3 and j=2i=3 and j=3i=2 and j=0i=2 and j=1i=2 and j=2i=1 and j=0i=1 and j=1

23

Page 24: أساسيات لغة جافا

ما هي نتيجة تنفيذ الكود التالي:-1boolean 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(;

A. i=5 j=3 x=true y=falseB. i=6 j=4 x=false y=trueC. i=5 j=3 x=false y=true

ما هي نتيجة تنفيذ الكود التالي:-2int i = 0;do{ System.out.println ) " do block."(; } while) i > 0(

.do blockيطبع أ.

خطأ أثناء الترجمة.ب.

خطأ أثناء التنفيذ.ت.

يتم تنفيNNذ الكNNود بNNدون خطNNأ ولكن الث.يطبع شيء.

ما هي الخيارات التي تمثNNل نتيجNNة تنفيNNذ-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 = 1B. i = 0 j = 2C. i = 0 j = 3D. i = 1 j = 1E. i = 1 j = 2F. i = 1 j = 3

ما هي الخيارات التي تمثNNل نتيجNNة تنفيNNذ-4الكود التالي:

OuterLoop: for )int i = 0; i < 2; i++(

for ) int j = 1; j < 4; j++( { if ) i == j ( continue OuterLoop; System.out.println ) " i = " + i + " j = " + j (; }

A. i = 0 j = 1B. i = 0 j = 2C. i = 0 j = 3D. i = 1 j = 1E. i = 1 j = 2F. i = 1 j = 3

ما نتيجة تنفيذ الكود التالي:-5

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يطبع أ.

.Case 2, Case 3يطبع ب.

.Case2, Case 3, Defaultيطبع ت.

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

ما هي نتيجة تنفيذ الكود التالي:-6int 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يطبعأ.

خطأ أثناء الترجمة عند السطر الثاني.ب.

.Case 2, Case 3, Defaultيطبعت.

خطأ أثناء الترجمة عند السطر األول.ث.

ما هي نتيجة تنفيذ الكود التالي:-7class ContinueTest {

24

Page 25: أساسيات لغة جافا

public static void main)String[] arg( { int i = 2; Outer: if )i < 5( { System.out.println)"I: " + i(; i++; continue Outer; } }}

خطأ أثناء الترجمة عند السطر الثامن.أ.

يطبع :ب.I: 2I: 3I: 4

يطبع:ت.I: 2

.خطأ أثناء التنفيذث.

ماذا يطبع الكود التالي:-8boolean 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(;

A. 10B. 7C. 8D. 9

ما هو السطر البرمجي الذي يجب وضعه-9 في السطر الثNNامن للمNNرور على عناصNNر

المصفوفة: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(

D. for)int I : myArray.iterator)((

ما هي العبارات الصحيحة:-10A. 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(;

ما هي نتيجة تنفيذ الكود التالي:-11int 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"(;

.message oneيطبع أ.

.message two يطبعب.

.message three يطبعت.

.message four يطبع ث.

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

case 2:

25

Page 26: أساسيات لغة جافا

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يطبع أ.يطبع:ب.

value is twovalue is threevalue is " + j

خطأ أثناء الترجمة عند السطر الخامس.ت.

يطبع:ث.value is twovalue is threevalue is " + j

مصNNفوفة عناصNNرهاsalaries إذا كNNانت -13 ، ما هي العبارة الصNNحيحةfloatمن نمط

للمرور على عناصر المصفوفة:A. for )float f:salaries(B. for )int i:salaries(C. for )float f::salaries(D. for )int i::salaries(

ما هي العبارات الصحيحة:-14A. for )int i=0, j=1; i>10; i++, j++(B. for )int i=0, j=1;; i++, j++(C. for )int i=0, float j=1; ; i++, j++(D. for )String s = ""; s.length)(>10;

s += '!'( ما هي العبارات الصحيحة:-15

A. while )int a = 0( { /* whatever */ }

B. while )int a == 0( { /* whatever */ }

C. do { /* whatever */ } while )int a = 0(

D. do { /* whatever */ } while )int a == 0(

E. for )int a==0; a>100; a++( { /* whatever */ }

F. كل العبارات السابقة خاطئة

ما هي أنماط البيانات الصNNحيحة لوسNNيط-16:switchعبارة

A. byteB. int

C. longD. float E. charF. String

ما نتيجة تنفيذ الكود التالي:-17

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: 13B. First if, value of k: 15 Out of if, k: 14C. First if, value of k: 15 Out of if, k: 13D. First if, value of k: 15 Out of if, k: 15

ما هي نتيجة تنفيذ الكود التالي:-18 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

26

Page 27: أساسيات لغة جافا

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

مNNا هي األسNNطر الNNتي سNNتكون جNNزء من-19نتيجة التنفيذ:

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 = 1B. i = 0 j = 2C. i = 0 j = 3D. i = 1 j = 1E. i = 1 j = 2F. i = 1 j = 3

ماذا يطبع البرنامج التالي:-20 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(;

} public static void main )String

args[] ( { methodA )0(; System.out.println)j(; } }

.0يطبع أ.

.4يطبع ب.

.8يطبع ت.

.12يطبع ث.

ما هي قيمة )( بعد التنفيذ:-21int i= 1, j= 10 ; do { if )i++> --j( continue; } while )i<5(;

A. i = 6 and j= 5 B. i = 5 and j= 5 C. i = 6 and j= 4 D. i = 5 and j= 6 E. i = 6 and j= 6

أي من األسطر التالية ستعطي خطأ أثناء-22الترجمة:

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"(;

ما هي نتيجة تنفيذ الصف التالي:-23public 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; } }

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

Hello Crowle يطبع ب.

يطبعت. Borcetshire Hello Crowle Hello Crowle

27

Page 28: أساسيات لغة جافا

ال يطبع شئءث.

24-Jcdddf25-kfdfd

fddfdلب

تلغعلغلعغل-67-

28