English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، سنتعلم كيفية استخدام 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 مجموعة متنوعة من الطرق لتنفيذ عمليات النص المختلفة. إليك بعض الطرق الشائعة.
الطريقة | الوصف |
---|---|
concat() | ربط النصين معًا |
equals() | مقارنة قيمة النصين |
charAt() | إرجاع الحرف الموجود في الموقع المحدد |
getBytes() | تحويل النص إلى مجموعة من الأحرف |
indexOf() | إرجاع موقع الحرف المحدد في النص |
length() | إرجاع حجم النص المحدد |
replace() | استبدال الحرف القديم بالحرف الجديد المحدد |
substring() | إرجاع النص الفرعي |
split() | قسّم النص إلى مجموعة من النصوص |
toLowerCase() | تحويل النص إلى حروف صغيرة |
toUpperCase() | تحويل النص إلى حروف كبيرة |
valueOf() | إرجاع شكل النص المحدد |
دعونا نأخذ بعض الأمثلة.
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() للحصول على حجم النص.
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، يمكننا أيضًا استخدام عمود + لربط سلسلتين.
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
في هذا المثال، استخدمنا عمود + لربط السلسلتين.
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() مقارنة سلسلتين.
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() للاستعلام عن الحرف من موقع معين.
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 يعني إنشاء كائن للفئة string.لا يمكن تغيير السطر عند إنشائه في Java.لذلك يُدعى السطر في Java بهذا الاسمغير القابل للتغييرسبب.
للتفكير في ذلك بشكل أعمق، لنرى مثالًا:
//إنشاء سطر String example = "Hello!";
في هذا المكان، أنشأنا كائن سطر "Hello!". بعد إنشائه، لن نستطيع تغييره.
الآن لنفترض أننا نريد تغيير السطر.
//إضافة سطر آخر إلى هذا السطر example = example.concat(" World");
في هذا المكان، نحاول إضافة سطر جديد إلى السطر السابق.
بسبب أن الأسطر هيغير القابل للتغيير، يجب أن يؤدي ذلك إلى خطأ. ولكن هذا جيد.
يبدو أننا يمكننا تغيير السطر. ولكن، الحقيقة ليست كذلك. دعونا نرى ما يحدث فعليًا هنا.
لدينا سطر "Hello!"، مرجعه متغير يُدعى example. الآن، عند تنفيذ الشيفرة المذكورة أعلاه،
يقبل JVM السطر "Hello!"
إضافة سطر "World" إليه
سيؤدي ذلك إلى إنشاء سطر جديد "Hello! World"
المرجع example يشير الآن إلى سطر جديد
السطر السابق "Hello!" لا يتغير
ملاحظة:عند كل إنشاء سطر جديد وتسميته بمرجع متغير.
حتى الآن، لقد أنشأنا في Java قيمًا مشابهة لأسطر الأساسيات. ولكن، نظرًا لأن الأسطر في Java هي كائنات، نستطيع أيضًا استخدام مفتاح new لإنشائها. على سبيل المثال،
//إنشاء سلسلة باستخدام كلمة المفتاح new String name = new String("java string");
في المثال السابق، استخدمنا كلمة المفتاح new ووظيفة التركيب String() لإنشاء سلسلة.
تقدم فئة String العديد من بناءات أخرى لإنشاء سلاسل.
الآن دعونا نرى كيف يختلف عملية إنشاء السلسلة مع العملية السابقة.
الآن نعرف كيفية إنشاء سلاسل باستخدام نص السلسلة وكلمة المفتاح new، دعونا نرى ما هي الاختلافات الرئيسية بينهما.
في Java، يحافظ JVM على خزان السلسلة لتحديد جميع السلاسل في ذاكرة
عند إنشاء سلسلة باستخدام نص سلسلة، يتم تقديم قيمة السلسلة مباشرة. لذلك، يتحقق المبرمج أولاً من خزان السلسلة لمعرفة ما إذا كانت السلسلة موجودة.
إذا كانت السلسلة موجودة، لن يتم إنشاء سلسلة جديدة. على العكس من ذلك، يشير الارتباط الجديد إلى السلسلة الموجودة.
إذا كانت السلسلة غير موجودة، يتم إنشاء سلسلة جديدة.
لكن، عند استخدام كلمة المفتاح new لإنشاء سلسلة، لن يتم تقديم قيمة السلسلة مباشرة. لذلك، يتم إنشاء سلسلة جديدة دائمًا.