English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية Java الأساسية

تحكم Java في العملية

مجموعات Java Array

Java التوجيه إلى الكائن (I)

Java التوجيه إلى الكائن (II)

Java التوجيه إلى الكائن (III)

معالجة الاستثناءات Java

قائمة Java List

Java Queue (الطابور)

مجموعات Java Map

مجموعات Java

Java الدخول والخروج (I/O)

Java Reader/Writer

موضوعات أخرى في Java

النص Java (String)

في هذا الدرس، سنتعلم كيفية استخدام Java String، وكيفية إنشائه ومجموعة من طرقه.

 في Java، النص هو سلسلة من الأحرف. على سبيل المثال، "hello" هو نص يحتوي على سلسلة من الأحرف "h"، "e"، "l"، "l" و "o".

مختلف عن لغات البرمجة الأخرى، ليست النصوص في Java نوعًا أساسيًا (مثل int، char، إلخ). عوضًا عن ذلك، كل نص هي كائن من صنف مسبقًا معرفًا يسمى String. على سبيل المثال:

//إنشاء نص
String type = "java programming";

في هذا السياق، قمنا بإنشاء نص تسمى type. هنا، استخدمنا "java programming" لتعريف النص. في Java، نستخدمأقواس مزدوجةيعبر عن النص.

هذا النص هو مثال على صنف String.

ملاحظة:كل متغير نصي هو مثال على صنف String.

طرق Java String

يقدم Java String مجموعة متنوعة من الطرق لتنفيذ عمليات النص المختلفة. إليك بعض الطرق الشائعة.

الطريقةالوصف
concat()ربط النصين معًا
equals()مقارنة قيمة النصين
charAt()إرجاع الحرف الموجود في الموقع المحدد
getBytes()تحويل النص إلى مجموعة من الأحرف
indexOf()إرجاع موقع الحرف المحدد في النص
length()إرجاع حجم النص المحدد
replace()استبدال الحرف القديم بالحرف الجديد المحدد
substring()إرجاع النص الفرعي
split()قسّم النص إلى مجموعة من النصوص
toLowerCase()تحويل النص إلى حروف صغيرة
toUpperCase()تحويل النص إلى حروف كبيرة
valueOf()إرجاع شكل النص المحدد

دعونا نأخذ بعض الأمثلة.

مثال 1: البحث عن طول النص في Java

class Main {
  public static void main(String[] args) {
    //إنشاء سطر
    String greet = "Hello! World";
    System.out.println("النص هو: " + greet);
    //يحقق طول النص
    System.out.println("طول النص: " + greet.length());
  }
}

نتيجة الإخراج

النص هو: Hello! World
طول النص: 12

في المثال السابق، قمنا بإنشاء نص تسمى greet. هنا، استخدمنا طريقة length() للحصول على حجم النص.

مثال 2: استخدام concat() لربط كلمتين في Java

class Main {
  public static void main(String[] args) {
    //إنشاء سطر
    String greet = "Hello! ";
    System.out.println("السلسلة الأولى: " + greet);
    String name = "World";
    System.out.println("السلسلة الثانية: " + name);
    // ربط سلسلتين
    String joinedString = greet.concat(name);
    System.out.println("السلسلة المربوطة: " + joinedString);
  }
}

نتيجة الإخراج

السلسلة الأولى: Hello!
السلسلة الثانية: World
السلسلة المربوطة: Hello! World

في المثال السابق، قمنا بإنشاء 2 نصوص تسمى greet و name.

في هذا المثال، استخدمنا طريقة concat() لربط السلاسل. لذلك، نحصل على سلسلة جديدة تُدعى joinedString.

في Java، يمكننا أيضًا استخدام عمود + لربط سلسلتين.

مثال 3: استخدام عمود + لربط السلاسل في Java

class Main {
  public static void main(String[] args) {
    //إنشاء سطر
    String greet = "Hello! ";
    System.out.println("السلسلة الأولى: " + greet);
    String name = "World";
    System.out.println("السلسلة الثانية: " + name);
    // ربط سلسلتين
    String joinedString = greet + name;
    System.out.println("السلسلة المربوطة: " + joinedString);
  }
}

نتيجة الإخراج

السلسلة الأولى: Hello!
السلسلة الثانية: World
السلسلة المربوطة: Hello! World

في هذا المثال، استخدمنا عمود + لربط السلسلتين.

مثال 4: مقارنة سلسلتين في Java

class Main {
  public static void main(String[] args) {
    // إنشاء سلسلة s
    String first = "java programming";
    String second = "java programming";
    String third = "python programming";
    // مقارنة السلسلة الأولى والثانية
    boolean result1 = first.equals(second);
    System.out.println("السلسلة الأولى والثانية متطابقة: " + result1);
    // مقارنة السلسلة الأولى والثالثة
    boolean result2 = first.equals(third);
    System.out.println("السلسلة الأولى والثالثة متطابقة: " + result2);
  }
}

نتيجة الإخراج

السلسلة الأولى والثانية متطابقة: true
السلسلة الأولى والثالثة متطابقة: false

في المثال السابق، استخدمنا طريقة equals() لتقييم قيمة السلسلتين.

إذا كانت السلسلتين متطابقتين، فإن هذه الطريقة تعود قيمة true، وإلا تعود قيمة false.

ملاحظةيمكننا أيضًا استخدام عمود == والطريقة compareTo() مقارنة سلسلتين.

مثال 5: الحصول على حرف من سلسلة في Java

class Main {
  public static void main(String[] args) {
    // إنشاء سلسلة باستخدام نص سلس
    String greet = "Hello! World";
    System.out.println("النص هو: " + greet);
    // العودة للحرف في الموقع 3
    System.out.println("الحرف في الموقع 3: " + greet.charAt(3));
    // العودة للحرف في الموقع 7
    System.out.println("الحرف في الموقع 7: " + greet.charAt(7));
  }
}

نتيجة الإخراج

النص هو: Hello! World
الحرف في الموقع 3: l
الحرف في الموقع 7: W

في المثال السابق، استخدمنا طريقة charAt() للاستعلام عن الحرف من موقع معين.

مثال 6: طرق أخرى لـ Strings في Java

class Main {
  public static void main(String[] args) {
    // إنشاء نص باستخدام كلمة المفتاح new
    String example = new String("Hello! World");
    // العودة بنص World
    System.out.println("استخدام subString(): " + example.substring(7));
    // تحويل النص إلى حروف صغيرة
    System.out.println("استخدام toLowerCase(): " + example.toLowerCase());
    // تحويل النص إلى حروف كبيرة
    System.out.println("استخدام toUpperCase(): " + example.toUpperCase());
    // استبدال الرمز '!' بالرمز 'o'
    System.out.println("استخدام replace(): " + example.replace('!', 'o'));
  }
}

نتيجة الإخراج

استخدام subString(): World
استخدام toLowerCase(): hello! world
استخدام toUpperCase(): HELLO! WORLD
استخدام replace(): Helloo World

في المثال السابق، قمنا باستخدام كلمة المفتاح new لإنشاء نص يُدعى example.

هنا،

  • طريقة substring() تعود بنص World

  • طريقة toLowerCase() تحويل النص إلى حروف صغيرة

  • طريقة toUpperCase() تحويل النص إلى حروف كبيرة

  • باستخدام طريقة replace() لتبديل الحرف '! ' إلى 'o'.

تحديد النص المكرر في السطر

يُستخدم في Java الأسطرأقواس مزدوجةتمثيل.

//إنشاء سطر
String example = "This is a string";

الآن، إذا أردنا أن نضمينأقواس مزدوجةعلى سبيل المثال،

//السطر يحتوي على أقواس مزدوجة
String example = "This is the "String" class";

سيؤدي ذلك إلى خطأ. لأننا نستخدمأقواس مزدوجةلتمثيل السطر. لذلك سيقوم المُ解释ر بمعالجته "This is the " كسطر.

لحل هذه المشكلة، استخدمت في Java تحديد النص المكرر (\). الآن يمكننا تضمينأقواس مزدوجة، مثلما يظهر هنا:

//استخدام تحديد النص المكرر
String example = "This is the \"String\" class.";

تحديد النص المكرر يخبر المُ解释ر بتحديد النص المكررأقواس مزدوجةوقراءة النص بأكمله.

الأسطر في Java غير القابلة للتغيير

إن إنشاء سطر في Java يعني إنشاء كائن للفئة string.لا يمكن تغيير السطر عند إنشائه في Java.لذلك يُدعى السطر في Java بهذا الاسمغير القابل للتغييرسبب.

للتفكير في ذلك بشكل أعمق، لنرى مثالًا:

//إنشاء سطر
String example = "Hello!";

في هذا المكان، أنشأنا كائن سطر "Hello!". بعد إنشائه، لن نستطيع تغييره.

الآن لنفترض أننا نريد تغيير السطر.

//إضافة سطر آخر إلى هذا السطر
example = example.concat(" World");

في هذا المكان، نحاول إضافة سطر جديد إلى السطر السابق.

بسبب أن الأسطر هيغير القابل للتغيير، يجب أن يؤدي ذلك إلى خطأ. ولكن هذا جيد.

يبدو أننا يمكننا تغيير السطر. ولكن، الحقيقة ليست كذلك. دعونا نرى ما يحدث فعليًا هنا.

لدينا سطر "Hello!"، مرجعه متغير يُدعى example. الآن، عند تنفيذ الشيفرة المذكورة أعلاه،

  • يقبل JVM السطر "Hello!"

  • إضافة سطر "World" إليه

  • سيؤدي ذلك إلى إنشاء سطر جديد "Hello! World"

  • المرجع example يشير الآن إلى سطر جديد

  • السطر السابق "Hello!" لا يتغير

ملاحظة:عند كل إنشاء سطر جديد وتسميته بمرجع متغير.

إنشاء سطر باستخدام مفتاح new

حتى الآن، لقد أنشأنا في Java قيمًا مشابهة لأسطر الأساسيات. ولكن، نظرًا لأن الأسطر في Java هي كائنات، نستطيع أيضًا استخدام مفتاح new لإنشائها. على سبيل المثال،

//إنشاء سلسلة باستخدام كلمة المفتاح new
String name = new String("java string");

في المثال السابق، استخدمنا كلمة المفتاح new ووظيفة التركيب String() لإنشاء سلسلة.

تقدم فئة String العديد من بناءات أخرى لإنشاء سلاسل.

الآن دعونا نرى كيف يختلف عملية إنشاء السلسلة مع العملية السابقة.

الفرق بين استخدام نص السلسلة وكلمة المفتاح new

الآن نعرف كيفية إنشاء سلاسل باستخدام نص السلسلة وكلمة المفتاح new، دعونا نرى ما هي الاختلافات الرئيسية بينهما.

 في Java، يحافظ JVM على خزان السلسلة لتحديد جميع السلاسل في ذاكرة

 عند إنشاء سلسلة باستخدام نص سلسلة، يتم تقديم قيمة السلسلة مباشرة. لذلك، يتحقق المبرمج أولاً من خزان السلسلة لمعرفة ما إذا كانت السلسلة موجودة.

  • إذا كانت السلسلة موجودة، لن يتم إنشاء سلسلة جديدة. على العكس من ذلك، يشير الارتباط الجديد إلى السلسلة الموجودة.

  • إذا كانت السلسلة غير موجودة، يتم إنشاء سلسلة جديدة.

 لكن، عند استخدام كلمة المفتاح new لإنشاء سلسلة، لن يتم تقديم قيمة السلسلة مباشرة. لذلك، يتم إنشاء سلسلة جديدة دائمًا.