Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ورقة Java المرجعية

آخر تحديث

Hello World وبنية البرنامج

كل برنامج Java يبدأ من دالة main داخل صنف.

العنصرالكود
تعريف الصنفpublic class Main { ... }
نقطة الدخولpublic static void main(String[] args) { ... }
طباعة سطرSystem.out.println("Hello, World!");
الطباعة دون سطر جديدSystem.out.print("text");
قراءة الإدخالScanner sc = new Scanner(System.in);
استيراد صنفimport java.util.ArrayList;
التعليقات// line و /* block */

أنواع البيانات

الأنواع الأولية بحروف صغيرة؛ وأصنافها الغلافية تبدأ بحرف كبير.

النوعالوصف
intعدد صحيح بإشارة 32-بت
longعدد صحيح بإشارة 64-بت
double / floatأعداد عشرية (نقطة عائمة)
booleantrue أو false
charحرف Unicode واحد 16-بت
byte / shortأعداد صحيحة 8-بت / 16-بت
Stringنص غير قابل للتغيير (صنف وليس نوعًا أوليًا)
Integer, Double, Booleanأصناف غلافية للأنواع الأولية
varنوع محلي مستنتَج (Java 10+)

المتغيرات

العمليةالصياغة
التعريف والتهيئةint x = 5;
استنتاج النوع (محلي)var name = "Ada";
ثابتfinal double PI = 3.14159;
دمج السلاسل النصيةString s = "Hi " + name;
تحويل سلسلة نصية إلى intint n = Integer.parseInt("42");
تحويل int إلى سلسلة نصيةString s = String.valueOf(42);
سلسلة نصية منسّقةString.format("%d items", n)

التحكم في التدفق

العبارةالصياغة
If / elseif (x > 0) { ... } else { ... }
عبارة switchswitch (n) { case 1: ...; break; default: ...; }
تعبير switchvar s = switch (n) { case 1 -> "one"; default -> "other"; };
حلقة whilewhile (i < n) { ... }
حلقة do-whiledo { ... } while (i < n);
حلقة forfor (int i = 0; i < n; i++) { ... }
for المحسّنة (for-each)for (String item : list) { ... }
Break / continuebreak; تخرج من حلقة، و continue; تتخطّى إلى التكرار التالي

الدوال

العمليةالصياغة
تعريف دالةint add(int a, int b) { return a + b; }
دون قيمة إرجاعvoid greet() { ... }
دالة ساكنة (static)static int square(int x) { return x * x; }
دالة عامة (public)public String getName() { return name; }
وسائط متغيرة (Varargs)int sum(int... nums) { ... }
استدعاء دالةint r = add(2, 3);
استدعاء دالة ساكنةMath.max(a, b);
تحميل زائد للدالة (overloading)int max(int a, int b) و double max(double a, double b)

الأصناف والبرمجة الكائنية (OOP)

العمليةالصياغة
تعريف صنفpublic class Dog { ... }
حقلprivate String name;
باني (constructor)public Dog(String name) { this.name = name; }
إنشاء كائنDog d = new Dog("Rex");
Getter / setterpublic String getName() { return name; }
الوراثةclass Puppy extends Dog { ... }
واجهةinterface Runnable { void run(); }
تنفيذ واجهةclass Task implements Runnable { ... }
تجاوز دالة (override)@Override public void speak() { ... }

المجموعات

مجموعات عامة من java.util.

النوعالاستخدام والمثال
ArrayList<T>مصفوفة ديناميكية: list.add(1); list.get(0); list.size();
HashMap<K, V>مفتاح-قيمة: map.put("a", 1); map.get("a");
HashSet<T>قيم فريدة: set.add(5); set.contains(5);
LinkedList<T>قائمة مرتبطة مزدوجة، جيدة كطابور/طابور ثنائي
ArrayDeque<T>مكدّس/طابور: dq.push(x); dq.pop();
مصفوفةint[] nums = {1, 2, 3};
التكرار على قائمةfor (T x : list) { ... }
التكرار على خريطةfor (var e : map.entrySet()) { e.getKey(); e.getValue(); }

Streams و lambdas

خطوط أنابيب بأسلوب وظيفي على المجموعات (Java 8+).

العمليةالصياغة
تعبير lambdax -> x * 2
إنشاء streamlist.stream()
التصفية.filter(n -> n > 0)
التحويل / Map.map(n -> n * 2)
الترتيب.sorted() أو .sorted(Comparator.reverseOrder())
الاختزال / الجمع.reduce(0, Integer::sum)
العدّ / المطابقة.count(), .anyMatch(n -> n > 5)
الجمع في قائمة.collect(Collectors.toList())
لكل عنصر.forEach(System.out::println)

الأنماط الشائعة (try/catch والأنواع العامة)

النمطالصياغة
Try / catchtry { ... } catch (Exception e) { ... }
التقاط استثناء محدّدcatch (IOException e) { ... }
Finallyfinally { ... } تعمل دائمًا
Try-with-resourcestry (Scanner sc = new Scanner(...)) { ... }
رمي استثناءthrow new IllegalArgumentException("bad");
صنف عامclass Box<T> { T value; }
دالة عامة<T> T first(List<T> list) { ... }
نوع مقيّد<T extends Number>

صياغة Java ومجموعاتها وعمليات streams التي تستخدمها أكثر من غيرها، على صفحة واحدة. ورقة Java المرجعية هذه هي مرجع سريع لكتابة Java - أنواع البيانات، والتحكم في التدفق، والأصناف، ومجموعات ArrayList/HashMap، وواجهة Streams، وأنماط الاستثناءات والأنواع العامة التي تستخدمها يوميًا.

كل ما هنا هو Java قياسية (Java 8 وما بعدها) ويُترجم بـ javac. انسخ ما تحتاجه، أو جرّب أيّ مقطع برمجي مباشرة في playground الخاص بـ Java - دون الحاجة إلى تثبيت أي JDK.

الأسئلة الشائعة حول ورقة Java المرجعية

هل ورقة Java المرجعية هذه مجانية؟
نعم. ورقة Java المرجعية هذه مجانية تمامًا، دون الحاجة إلى التسجيل. أضِفها إلى المفضلة وارجع إليها متى احتجت إلى البحث عن صياغة أو مجموعة أو عملية stream.
ما الفرق بين == و .equals() في Java؟
بالنسبة للكائنات، يقارن == المراجع - أي ما إذا كان متغيران يشيران إلى الكائن نفسه بالضبط - بينما يقارن .equals() المحتويات. كائنا String مختلفان بالنص نفسه يتساويان بـ .equals() لكن قد لا يتساويان بـ ==. استخدم دائمًا .equals() لمقارنة السلاسل النصية وغيرها من الكائنات من حيث تساوي القيمة؛ واستخدم == فقط للأنواع الأولية (int و boolean وغيرها) أو للتحقق من null.
فيمَ تُستخدم streams في Java؟
تتيح لك واجهة Streams (Java 8+) معالجة المجموعات بخط أنابيب مقروء من العمليات - filter و map و sorted و reduce و collect - بدلًا من الحلقات اليدوية. تبدأ بـ list.stream()، وتسلسل العمليات الوسيطة، وتنهي بعملية طرفية مثل collect(Collectors.toList()) أو forEach. وهي تُبقي كود تحويل البيانات موجزًا ومعبّرًا.
هل يمكنني التدرّب على Java عبر الإنترنت؟
نعم. افتح playground الخاص بـ Java لترجمة وتشغيل أيّ مقطع برمجي من هذه الورقة المرجعية في متصفحك - دون الحاجة إلى تثبيت أي JDK. وعندما ترغب في تعلّم منظّم، تأخذك دورة Java التفاعلية المجانية من Coddy من المتغيرات والحلقات إلى الأصناف والمجموعات و streams خطوة بخطوة.
هل هذه الورقة المرجعية مناسبة للمبتدئين؟
نعم. إنها مرتّبة من اللبنات الأكثر شيوعًا (الأنواع والتحكم في التدفق والدوال) وصولًا إلى المتقدمة (streams والأنواع العامة والاستثناءات)، بحيث يمكنك استخدام الأقسام العلوية من اليوم الأول والتدرّج إلى البقية.
Coddy programming languages illustration

تعلّم Java مع Coddy

ابدأ الآن