Java tutorial | دروس جافا 👨🏻‍🏫
2.3K subscribers
87 photos
81 videos
29 files
53 links
حبيت اشاركم كل معرفتي في الجافا ولغات اخرى فسويت هذه القناة
اتمنى أن تعود بالمنفعة عليكم🌹
لطلب حل تكاليف أو مشاريع تواصل معي على

Telegram: @abdu01010

Whatsapp: https://wa.me/967783399063

كما نقدم خدمات تسوقية في القناة مدفوعة الاجرة
..............
Download Telegram
📌 شرح كامل لكيفية التعامل مع الفايلات في جافا 👇
م/عادل نسيم
👍41
Media is too big
VIEW IN TELEGRAM
1️⃣- File Handling(java.io_ Byte _ Character stream_ InputStream _ OutputStream subclasses)

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
Media is too big
VIEW IN TELEGRAM
2️⃣- File Handling ( FileInputStream class_ Character size vs String size )

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
Media is too big
VIEW IN TELEGRAM
3️⃣- File Handling (FileOutputStream class_ Reading and Writing images_ Arabic letters)

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
Media is too big
VIEW IN TELEGRAM
4️⃣- File Handling (File class)

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
Media is too big
VIEW IN TELEGRAM
5️⃣- File Handling (File class_ Directories _Add_Remove__ Constructors)

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
Media is too big
VIEW IN TELEGRAM
6️⃣- File Handling (Reader class_Writer class hierarchy_ FileWriter _ FileReader)

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
Media is too big
VIEW IN TELEGRAM
7️⃣- File Handling (BufferedReader _ BufferedWriter classes_ Read file line by line)

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
Media is too big
VIEW IN TELEGRAM
8️⃣- File Handling (PrintWriter class _Constructors _ Methods_)

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
Media is too big
VIEW IN TELEGRAM
9️⃣- File Handling (Scanner class _Constructors _ Methods__ useDelimiter_ delimiter)

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
Media is too big
VIEW IN TELEGRAM
🔟- File Handling (Serialization and Deserialization _Read _ Write multiple objects)

————————————————————
#Java_Level_2

Tel: @Java_tutorial0101
This media is not supported in your browser
VIEW IN TELEGRAM
من الردود الجميلة للمستفيدين من خدماتي والقائمة تطول😊
#ردود
————————————————————
TeleChannel: @Java_tutorial0101

لطلب عمل مشاريع او حل واجبات تواصل معي على

Tele: @abdu01010

WhatsApp: https://wa.me/967783399063
71
🧠 Java Serialization & Deserialization
موضوع مهم جدا لكل مبرمج جافا خصوصا اذا كنت تعمل في التطبيقات التي تحتاج إلى حفظ البيانات أو نقل الكائنات بين الأجهزة أو الشبكات.

ᴀʙᴅᴜʟʙᴀʀɪ ᴀʟ-ᴍᴀᴍᴀʀɪ 👨🏻‍🏫
Tel: @abdu01010
WApp: https://wa.me/967783399063
—————————————————

عزيزي الطالب، Serialization في Java هو عبارة عن عملية تحويل الكائن (Object) إلى سلسلة من البيانات (Bytes) حتى نتمكن من:

📁 تخزينه في ملف.

🌐 إرساله عبر الشبكة.

🧠 حفظ حالته لاسترجاعه لاحقا.


وسنشرح هذه العملية بطريقة مفصلة وبسيطة.

📌 أولاً: ماهو Serialization؟

هي عملية تحويل كائن (object) إلى صيغة يمكن تخزينها (عادةً في ملف أو قاعدة بيانات) أو إرسالها عبر الشبكة.

ببساطة:
نحول الكائن إلى Bytes
ثم نحفظ هذه البايتات في ملف
أو نرسلها لأي مكان
وبعدها نقدر نرجّع نفس الكائن كما كان 100% باستخدام عملية تسمى Deserialization.

📌 ثانياً: كيف يتم Serialization في Java؟

لتقوم بهذه العملية يجب أن تنفذ بعض الخطوات الأساسية:

1. الكلاس يجب أن يعمل implement لكلاس Serializable
import java.io.Serializable;

public class Student implements Serializable {
String name;
int age;

public Student(String name, int age) {
this.name = name;
this.age = age;
}
}


2. عملية الحفظ (Serialization)

import java.io.*;

public class SaveObject {
public static void main(String[] args) throws IOException {
Student s = new Student("Ali", 21);
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("student.ser"));
out.writeObject(s);
out.close();
}
}


3. عملية الاسترجاع (Deserialization)

import java.io.*;

public class LoadObject {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("student.ser"));
Student s = (Student) in.readObject();
System.out.println("Name: " + s.name + ", Age: " + s.age);
in.close();
}
}



📍 الفوائد من استخدامه:

طريقة سهلة جداً لحفظ حالة الكائنات (Objects).

مفيدة جداً في تطبيقات الشبكات، قواعد البيانات المؤقتة، التخزين المؤقت (caching)، وغيرها.

————————————————————
كل الحقوق محفوظة لقناة
Java tutorial (https://t.me/java_tutorial0101)
Tel: @Java_tutorial0101
8
🧠 Java Map Interface
من أهم المواضيع التي يجب أن تتقنها كمبرمج Java، خصوصًا إذا كنت تتعامل مع بيانات كثيرة وتحتاج تخزنها على شكل "زوج مفتاح-قيمة" (Key-Value).

ᴀʙᴅᴜʟʙᴀʀɪ ᴀʟ-ᴍᴀᴍᴀʀɪ 👨🏻‍🏫
Tel: @abdu01010
WApp: https://wa.me/967783399063
—————————————————

عزيزي الطالب، الكائن Map هو جزء من مكتبة Java Collections Framework، ويُستخدم لتخزين البيانات على شكل:


مفتاح => قيمة
Key => Value

ويكون المفتاح فريدًا، أي لا يمكن تكراره. بينما يمكن أن تتكرر القيم.

📌 أولاً: ما هي Map؟

Map هي (Interface) في Java، لا ترث من Collection، لكنها جزء من حزمة java.util وتُستخدم لتخزين وربط البيانات.

مثال بسيط:

Student ID => Student Name
"001" => "Ali"
"002" => "Hassan"

كل طالب له معرف خاص (المفتاح)، يرتبط باسم الطالب (القيمة).

📌 ثانياً: أهم أنواع الـ Map المستخدمة

HashMap:
الأكثر استخدامًا – لا يحافظ على ترتيب الإدخال.

LinkedHashMap:
يحافظ على ترتيب الإدخال.

TreeMap:
يرتب المفاتيح بشكل تلقائي (تصاعدي).

Hashtable:
قديم – متزامن (synchronized) لكن أقل كفاءة.


📌 ثالثاً: كيف نستخدم Map في Java؟

مثال باستخدام HashMap:
import java.util.HashMap;
import java.util.Map;

public class MapExample {
public static void main(String[] args) {
Map<String, String> students = new HashMap<>();

students.put("001", "Ali");
students.put("002", "Hassan");
students.put("003", "Salem");

System.out.println("Student with ID 001: " + students.get("001"));

// طباعة كل القيم
for (String key : students.keySet()) {
System.out.println("ID: " + key + ", Name: " + students.get(key));
}
}
}


📌 رابعاً: أهم الدوال المستخدمة مع Map

put(key, value):
لإضافة أو تعديل عنصر.
get(key) :
للحصول على قيمة بناءً على المفتاح.
remove(key) :
لحذف عنصر بناءً على المفتاح.
containsKey(key) :
يتحقق هل المفتاح موجود.
containsValue(value) :
يتحقق هل القيمة موجودة.
keySet() :
ترجع جميع المفاتيح.
values() :
ترجع جميع القيم.
entrySet() :
ترجع كل العناصر (المفتاح والقيمة).


📍 العيوب:

لا تقبل المفاتيح المكررة.

ليست مناسبة إذا كنت تحتاج ترتيب محدد (إلا إذا استخدمت TreeMap أو LinkedHashMap).

HashMap ليست آمنة في البيئات المتعددة الخيوط (multi-threaded).

📍 المحاسن:

سرعة كبيرة في عمليات الإدخال والبحث والحذف.

مرنة وتدعم أنواع متعددة من المفاتيح والقيم.

مثالية لتمثيل العلاقات (Key => Value).

————————————————————
كل الحقوق محفوظة لقناة
Java tutorial (https://t.me/java_tutorial0101)
Tel: @Java_tutorial0101
5
مع قرب موعد الدراسة ماتقصرون في نشر القناة على الطلاب الجدد المقبلين على دراسة جافا حتى يستفيدون من محتواها ومن الخدمات اللي نقدمها من خلالها🌹
كما اني سأعمل ان شاء الله على تغطية لغة #C او اي لغة اخرى... ان شاءالله ايضا

https://t.me/java_tutorial0101
🫡8
للي يبحثوا عن موقع يرسموا فيه الفلوشارت او تصميم قواعد البيانات او اي شي في رسم الاشكال والمخططات يستخدم هذا الموقع المجاني 100% :👇
draw.io
👍4
محتوى القناة مجهود شخصي اقدمه لكم بدون اي مقابل 😊🤍

فتقديرا لمجهودي لا تقصرون في نشر القناة بين الطلاب خاصة المستجدين لتعم الفائدة.
ربنا يوفقكم جميعا
🌹
🫡43👍2
🧠 Java Memory: Stack & Heap
لفهم الفرق بين Primitive, Reference, Instance Variables, Object، لازم أولاً نفهم كيف جافا تدير الذاكرة.
الذاكرة في جافا تنقسم إلى منطقتين رئيسيتين:

Stack Memory (الذاكرة المؤقتة السريعة)

Heap Memory (الذاكرة المخصصة للكائنات)

ᴀʙᴅᴜʟʙᴀʀɪ ᴀʟ-ᴍᴀᴍᴀʀɪ 👨🏻‍🏫
Tel: @abdu01010
WApp: https://wa.me/967783399063

—————————————————

عزيزي الطالب، دعنا نوضح كل واحدة منهم بطريقة مبسطة:

📌 أولاً: Stack Memory (ذاكرة المكدس)

تُستخدم لتخزين:
Primitive Variables (int, double, char …)
References للكائنات (العناوين التي تشير لمكان الكائن في Heap).
متغيرات محلية داخل الميثود.

مميزاتها:
⚡️ سريعة جداً في الوصول.
⚡️ تُدار أوتوماتيكياً (عند خروج الميثود، تُحذف كل بياناته من الـ Stack).

📝 مثال:
int x = 10;   // يخزن في Stack
String str; // المرجع (العنوان) يخزن في Stack


📌 ثانياً: Heap Memory (ذاكرة الكومة)

تُستخدم لتخزين:
Objects (الكائنات) التي تُنشأ باستخدام new.
Instance Variables الخاصة بالكائنات.

مميزاتها:
🧠 أبطأ من Stack لكنها مرنة (تخزن كائنات ضخمة).
🧠 تبقى الكائنات موجودة حتى لو خرجت من الميثود، طالما هناك مرجع يشير إليها.
🧠 إذا لم يعد هناك أي مرجع يشير للكائن ⇒ Garbage Collector يقوم بحذفه تلقائياً.

📝 مثال:
Student s1 = new Student();  
// الكائن Student يُخزن في Heap
// المرجع (العنوان) s1 يُخزن في Stack

💡 صورة ذهنية مبسطة:

تخيل Stack مثل مكتب صغير فوق الطاولة: تضع عليه أوراقك (primitive) أو كروت عليها عناوين (references).

تخيل Heap مثل مخزن ضخم خلف المكتب: فيه الكائنات (objects) نفسها. الكارت الموجود على المكتب (reference) يقول لك: "اذهب إلى الرف رقم كذا في المخزن".


—————————————————
اشترك في القناة لتعلم المزيد
Java tutorial (https://t.me/java_tutorial0101
)
Tel: @Java_tutorial0101
1
🧠 Java Variables & Objects: Primitive, Reference, Instance, and Object

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

ᴀʙᴅᴜʟʙᴀʀɪ ᴀʟ-ᴍᴀᴍᴀʀɪ 👨🏻‍🏫
Tel: @abdu01010
WApp: https://wa.me/967783399063

—————————————————

عزيزي الطالب، عند التعامل مع جافا ستواجه هذه الأنواع الأساسية:

Primitive Variable
Reference Variable
Instance Variable
Object


خلينا نشرحها بالتفصيل وبأسلوب مبسط.

📌 أولاً: Primitive Variables (المتغيرات الأولية)
هذه هي الأنواع البسيطة في جافا، تخزن القيمة نفسها داخل الذاكرة (stack).
أنواعها: int, double, char, boolean, …

int age = 25;
double gpa = 3.9;


النسخ (نسب متغير لمتغير اخر) هنا يعمل نسخة مستقلة من القيمة:

int x = 10;
int y = x;
y = 20;
System.out.println(x); // 10


📌 ثانياً: Reference Variables (المتغيرات المرجعية)
المتغير المرجعي لا يخزن الكائن نفسه، بل يخزن العنوان في الذاكرة (pointer غير مباشر للكائن في الـ Heap).
String str1 = "Java";
String str2 = str1;


هنا:

str1 يشير إلى كائن String يحتوي النص Java .

str2 يأخذ نفس العنوان، أي أن كلاهما يشيران لنفس الكائن.

لكن:

إذا غيرت str2 إلى "Python"، فلن يتغير str1 لأنه سيشير إلى كائن جديد.

السبب: الكائنات من نوع String في جافا Immutable (غير قابلة للتغيير).

💡 ملاحظة مهمة: في الكلاسات الأخرى (غير String)، إذا عدلت على الكائن من خلال مرجع واحد، سترى التغيير في المرجع الآخر لأنهما يشيران لنفس الكائن كما سنشرح تباعا في الـ Object.

📌 ثالثاً: Object (الكائن)
الكائن هو نسخة حقيقية (instance) من الكلاس.
عند استخدام الكلمة new يتم إنشاء كائن جديد في الذاكرة (Heap)، وتُرجع مرجع (Reference) يشير إليه.

Student s1 = new Student(); // إنشاء كائن جديد


هنا:

Student هو class (مخطط).

s1 هو reference variable يشير إلى الكائن.

الكائن نفسه (object) يحتوي على instance variables (مثل name, age).

 Student s1 = new Student(); // إنشاء كائن جديد
s1.name = "Ali";
s1.age = 20;

Student s3 = s1; // s3 و s1 يشيران لنفس الكائن
s3.age = 30; // تغيير عبر s3

هنا:

s3 = s1 ⇒ كلاهما يشيران لنفس الكائن.
أي تعديل على s3 سيظهر في s1 لأنه نفس الكائن.

📌 رابعا: Instance Variables (المتغيرات الخاصة بالكائن)
هي المتغيرات المعرفة داخل الكلاس ولكن خارج أي method.
كل كائن (Object) يتم إنشاؤه من الكلاس يحصل على نسخة مستقلة من هذه المتغيرات.
class Student {
String name; // instance variable
int age; // instance variable
}

Student s1 = new Student();
s1.name = "Ali";
s1.age = 20;

Student s2 = new Student();
s2.name = "Sara";
s2.age = 22;


كل طالب (s1, s2) له بياناته الخاصة.

💡 صورة ذهنية مبسطة:


تخيل أن الكلاس (Class) هو مخطط بيت.

Object هو البيت الحقيقي المبني من المخطط.

Instance Variables هي الغرف داخل البيت (محتوى الكائن).

Reference Variable هو العنوان على الخريطة الذي يدلنا على مكان البيت.

Primitive Variable مثل ورقة صغيرة تكتب عليها رقماً وتحفظها معك (مستقلة بذاتها).

————————————————————
كل الحقوق محفوظة لقناة
Java tutorial (https://t.me/java_tutorial0101)
Tel: @Java_tutorial0101
2
Java tutorial | دروس جافا 👨🏻‍🏫
🧠 Java Variables & Objects: Primitive, Reference, Instance, and Object هذا الموضوع مهم جداً لأنه يوضح لك كيف جافا تتعامل مع البيانات في الذاكرة، سواء كانت بسيطة مثل الأرقام أو معقدة مثل الكائنات (Objects). ᴀʙᴅᴜʟʙᴀʀɪ ᴀʟ-ᴍᴀᴍᴀʀɪ 👨🏻‍🏫 Tel: @abdu01010 WApp: …
برنامج بسيط في جافا يوضح الفرق بين Primitive, Reference, Instance Variables, و Object في مثال واحد.
ᴀʙᴅᴜʟʙᴀʀɪ ᴀʟ-ᴍᴀᴍᴀʀɪ 👨🏻‍🏫
Tel: @abdu01010
WApp: https://wa.me/967783399063

—————————————————
// تعريف كلاس Student
class Student {
// Instance Variables (لكل كائن نسخة خاصة)
String name;
int age;
}

public class VariablesDemo {
public static void main(String[] args) {

// 1️⃣ Primitive Variable
int x = 10;
int y = x; // نسخة مستقلة
y = 20;
System.out.println("Primitive:");
System.out.println("x = " + x); // 10
System.out.println("y = " + y); // 20
System.out.println("--------------------");

// 2️⃣ Reference Variable مع String
String str1 = "Java";
String str2 = str1; // يشيران لنفس الكائن
str2 = "Python"; // str2 يشير الآن لكائن جديد
System.out.println("Reference:");
System.out.println("str1 = " + str1); // Java
System.out.println("str2 = " + str2); // Python
System.out.println("--------------------");

// 3️⃣ Object + Instance Variables
Student s1 = new Student(); // إنشاء كائن جديد
s1.name = "Ali";
s1.age = 20;

Student s2 = new Student(); // إنشاء كائن ثاني
s2.name = "Sara";
s2.age = 22;

System.out.println("Objects & Instance Variables:");
System.out.println("s1 -> name: " + s1.name + ", age: " + s1.age);
System.out.println("s2 -> name: " + s2.name + ", age: " + s2.age);
System.out.println("--------------------");

// 4️⃣n توضيح أن المرجع يشير لنفس الكائن

Student s3 = s1; // s3 و s1 يشيران لنفس الكائن
s3.age = 30; // تغيير عبر s3
System.out.println("Reference to same object:");
System.out.println("s1 -> age: " + s1.age); // 30
System.out.println("s3 -> age: " + s3.age); // 30
}
}


📌 شرح ما يحدث في البرنامج

Primitive Variable

x = 10،

y = x ⇒ نسخة مستقلة.

تغيير y لا يؤثر على x.

Reference Variable

str1 و str2 يشيران لنفس النص "Java".

عند إسناد "Python" لـ str2، صار يشير لكائن جديد مختلف.

str1 ظل يشير لـ "Java".

Object + Instance Variables

s1 و s2 كائنان مختلفان من Student.

لكل كائن نسخة خاصة من المتغيرات name و age.

Reference to same object

s3 = s1 ⇒ كلاهما يشيران لنفس الكائن.

أي تعديل على s3 سيظهر في s1 لأنه نفس الكائن.
————————————————————
اشترك في القناة لتعلم المزيد
Java tutorial (https://t.me/java_tutorial0101)
Tel: @Java_tutorial0101
1