المصفوفات في جافا
مصفوفة: تعني Array في البرمجة. و المصفوفة عبارة عن كائن يحتوي مجموعة عناصر من نفس النوع تتخزن بجوار بعضها في الذاكرة.
بمعنى آخر المصفوفة عبارة عن كائن يمكنه تخزين عدة قيم من نفس النوع.
عناصر المصفوفة تتميز عن بعضها من خلال رقم محدد يعطى لكل عنصر يسمى index. أول عنصر فيها يتم تخزينه في الـ index رقم 0.
عدد عناصر المصفوفة ثابت, أي بمجرد أن قمت بتحديده لا يمكنك تغييره من جديد, لكنك تستطيع تغيير قيم هذه العناصر متى شئت.
فوائد الـ Array
تقليل عدد المتغيرات المتشابهة, فمثلاً إذا كنا نريد تعريف 10 متغيرات نوعهم
int, نقوم بتعريف مصفوفة واحدة تتألف من 10 عناصر.تطوير الكود, إذا قمت بتخزين المعلومات داخل مصفوفة, تستطيع تعديلهم, مقارنتهم أو جلبهم كلهم دفعة واحدة بكود صغير جداً باستخدام الحلقات.
تستطيع الوصول لأي عنصر من خلال الـ index.
المشكلة الوحيدة في الـ Array
حجمها ثابت, أي عندما تقوم بتعريف مصفوفة و تحدد عدد عناصرها, لا يمكنك تغيير حجمها لاحقاً, أي لا يمكن حذف عنصر أو زيادة واحد جديد.
هذه المشكلة تم حلها لاحقاً من خلال إطار تخزين متطور يسمى Collection ستتعرف عليه في دروس لاحقة.
مصطلحات تقنية
الفرق بين Declare Array و Create Array هو:
Declare Array تعني تعريف نوع في الذاكرة يفهمه المعالج على أنه مصفوفة.
Create Array تعني تحديد عدد عناصر المصفوفة و إعطاء قيمة أولية لكل عنصر فيها.
ملاحظة: لا تستطيع التعامل مع المصفوفة إذا لم تفعل لها Create.
تعريف مصفوفة
تعريف مصفوفة جديدة يسمى Declare Array
يمكنك تعريف مصفوفة جديدة بثلاث طرق:
datatype[] arrayRefVar; // هذا الأسلوب المفضل في جافا
// أو هكذا
datatype []arrayRefVar;
// أو هكذا
datatype arrayRefVar[];
datatype: هو نوع المصفوفة التي سيتم تعريفها.
[]: هو من كم بعد تتألف المصفوفة.
أمثلة
// double هنا قمنا بتعريف مصفوفة ذات بعد واحد, نوعها double[] doubleArray; // int هنا قمنا بتعريف مصفوفة ذات بعدين, نوعها int[][] intArray; // String هنا قمنا بتعريف مصفوفة ذات بعد واحد, نوعها String[] stringArray;
إنشاء مصفوفة في جافا
إنشاء مصفوفة جديدة يعني Create Array في اللغة الإنجليزية.
إذا أردت أن تعرف أي مصفوفة فعندك طريقتين:
تنشئ المصفوفة و تعطيها القيم لاحقاً.
تنشئ المصفوفة و تعطيها القيم مباشرةً عند تعريفها.
طريقة إنشاء مصفوفة و إعطائها القيم لاحقاً
:arrayRefVar: هو إسم المصفوفة التي يجب أن تكون معرفة سابقاً.
new: تقوم بتوليد قيم أولية لجميع عناصر المصفوفة, تعطيهم القيمة صفر كقيمة أولية.
datatype: هو نوع القيم الأولية التي سيتم توليدها.
size: هو عدد عناصر المصفوفة.
طريقة إنشاء مصفوفة و إعطائها قيم أولية مباشرةً عند إنشائها
arrayRefVar: هو إسم المصفوفة التي يجب أن تكون معرفة سابقاً.
value0 و value1 و valuek: عبارة عن القيم التي نعطيها للمصفوفة.
تعريف مصفوفة و إعطاءها قيم أولية بكود أقل
يمكنك أن تفعل Declaring و Creating و Assigning لمصفوفة جديدة في جملة واحدة.
يمكنك تحديد عدد عناصرها فقط عند تعريفها, و عندها ستعطى القيمة صفر لجميع عناصرها كقيمة أولية.
و يمكنك إعطائها قيم أولية مباشرةً عند تعريفها, و عندها تتخزن كل قيمة في عنصر, و هكذا يتحدد عدد عناصرها.
يمكنك الوصول لعناصر المصفوفة من خلال الـ index.
يتم تخزين عناصر المصفوفة إبتداءاً من الـ index رقم 0 إلى الـ index رقم length-1.
بمعنى آخر العنصر الأول في المصفوفة يحمل الـ index رقم 0, و العنصر الآخير فيها يحمل index رقم length-1.
ملاحظة
القيمة الإفتراضية صفر تعطى حسب نوع المصفوفة.
إذا كان نوع المصفوفة int أو longالقيمة الإفتراضية التي ستعطى لجميع عناصر المصفوفة هي 0.
إذا كان نوع المصفوفة double أو floatالقيمة الإفتراضية التي ستعطى لجميع عناصر المصفوفة هي 0.0.
إذا كان نوع المصفوفة String القيمة الإفتراضية التي ستعطى لجميع عناصر المصفوفة هي null.
شكل المصفوفة في الذاكرة
لنفترض الآن أننا قمنا بتعريف مصفوفة نوعها int, إسمها a, تتألف من 5 عناصر.
int[] a = { 10, 20, 30, 40, 50 };
يمكنك تصور شكل المصفوفة a في الذاكرة كالتالي.
بما أن المصفوفة تتألف من 5 عناصر, تم إعطاء العناصر أرقام index بالترتيب من 0 إلى 4.
إذاً هنا أصبح عدد عناصر المصفوفة يساوي 5 و هو ثابت لا يمكن تغييره لاحقاً في الكود.
و يمكنك إستخدام أرقام الـ index لتصل لجميع عناصر المصفوفة سواء لعرض القيم أو لتغييرها.
في المثال التالي, قمنا بتعريف مصفوفة, ثم غيرنا قيمة العنصر الأول, ثم عرضناها, من خلال الـ index الخاص بالعنصر.
بعدها, إستخدامنا الخاصية length الموجودة في جافا لطباعة عدد عناصر المصفوفة.
مثال
public class Main {
public static void main(String[] args) {
int[] a = { 10, 20, 30, 40, 50 }; // هنا قمنا بتعريف مصفوفة تتألف من 5 عناصر
a[0] = 99; // هنا قمنا بتغيير قيمة العنصر الأول
System.out.println("a[0] = " + a[0]); // هنا عرضنا قيمة العنصر الأول
System.out.println("a.length = " + a.length); // هنا عرضنا عدد عناصر المصفوفة
}
}
•سنحصل على النتيجة التالية عند التشغيل
a[0] = 99 a.length = 5
مثال شامل حول التعامل مع المصفوفات
سنقوم الآن بكتابة برنامج شامل لكل المفاهيم التي ذكرناها في المصفوفات في جافا.
الخطوات التي سنقوم بتنفيذها هي التالية:
تعريف مصفوفة فارغة نوعها
int, إسمها numbers, تتألف من 5 عناصر.عرض قيمها الأولية باستخدام حلقة.
إعطاء قيمة لكل عنصر فيها.
عرض جميع قيمها من جديد باستخام حلقة
مثال
public class Main {
public static void main(String[] args) {
// 1- هنا قمنا بتعريف المصفوفة
int[] numbers = new int[5];
// 2- هنا قمنا بعرض قيم جميع عناصرها
for(int i=0; i<numbers.length; i++)
{
System.out.println("numbers[" + i + "]: " + numbers[i]);
}
// 3- هنا قمنا يتغيير قيم جميع عناصرها
numbers[0] = 1000;
numbers[1] = 2000;
numbers[2] = 3000;
numbers[3] = 4000;
numbers[4] = 5000;
System.out.println();
// 4- هنا قمنا بعرض قيم جميع عناصرها
for(int i=0; i<numbers.length; i++)
{
System.out.println("numbers[" + i + "]: " + numbers[i]);
}
}
}
•سنحصل على النتيجة التالية عند التشغيل
numbers[0]: 0 numbers[1]: 0 numbers[2]: 0 numbers[3]: 0 numbers[4]: 0 numbers[0]: 1000 numbers[1]: 2000 numbers[2]: 3000 numbers[3]: 4000 numbers[4]: 5000
الحلقة foreach في جافا
إبتداءاً من الإصدار 1.5 في جافا, قدم لنا حلقة for جديدة إسمها foreach loop.
هذه الحلقة تسمح لك بالمرور على جميع عناصر المصفوفة دون الحاجة لتعريف عداد و تحديد أين يبدأ و أين ينتهي.
طريقة تعريف الحلقة foreach
في البداية نحن لا نكتب foreach بل نكتب for.
الإختلاف بين foreach و for التقليدية يظهر فقط بين القوسين, لاحظ الـ syntax.
// statements
}
element: هو متغير عادي نقوم بتعريفه بداخل الحلقة و نعطيه نفس نوع المصفوفة التي نضعها بعد النقطتين, لأنه في كل دورة سيقوم بتخزين قيمة عنصر من عناصرها, لذلك يجب وضع نوعه مثل نوعها.
array: هي المصفوفة التي نريد الوصول لجميع عناصرها.
statements: هي جميع الأوامر الموضوعة في الحلقة و هي تتنفذ في كل دورة.
إذاً هنا تقوم الحلقة بالمرور على جميع عناصر المصفوفة بالترتيب من العنصر الأول إلى العنصر الأخير, و في كل دورة تقوم بتخزين قيمة العنصر في المتغير الذي قمنا بتعريفه.
سنقوم الآن بكتابة برنامج بسيط يعرض قيم جميع عناصر مصفوفة باستخدام الحلقة foreach.
مثال
public class Main {
public static void main(String[] args) {
// هنا قمنا بتعريف المصفوفة
int[] numbers = { 1000, 2000, 3000, 4000, 5000 };
// element في المتغير numbers هنا في كل دورة سيتم تخزين قيمة عنصر من عناصر المصفوفة
for(int element: numbers)
{
System.out.println(element); // element هنا سيتم عرض القيمة التي تخزنت في المتغير
}
}
}
•سنحصل على النتيجة التالية عند التشغيل
1000 2000 3000 4000 5000
تعامل الدوال مع المصفوفات
سنتكلم الآن عن نقتطين أساسيتين:
تمرير المصفوفة كـ argument للدالة.
تعريف دالة ترجع مصفوفة.
تمرير المصفوفة كـ argument للدالة
سنقوم بتعريف دالة تأخذ مصفوفة كباراميتر, مهمة هذه الدالة ستكون فقط طباعة جميع قيم عناصر المصفوفة.
ثم سنقوم بإستدعاء هذه الدالة مرتين, لأننا سنعلمك طريقتين لتمرير مصفوفة كـ argument.
مثال
public class Main {
// 1- argument هنا قمنا بتعريف دالة تطبع محتوى أي مصفوفة نمررها لها كـ
public static void printArray(int[] array) {
for (int i=0; i<array.length; i++) {
System.out.print(array[i] + " ");
}
}
public static void main(String[] args) {
// 2- هنا قمنا بتعريف مصفوفة
int[] numbers = { 1000, 2000, 3000, 4000, 5000 };
// 3- هنا قمنا باستدعاء الدالة و مررنا لها المصفوفة
printArray(numbers);
System.out.println();
// 4- هنا قمنا باستدعاء الدالة و أنشأنا مصفوفة بداخلها. ستفهم هذا الأسلوب في دروس لاحقة
printArray(new int[] {11, 12, 13, 14, 15});
}
}
•سنحصل على النتيجة التالية عند التشغيل
1000 2000 3000 4000 5000 11 12 13 14 15
تعريف دالة ترجع مصفوفة
سنقوم بتعريف دالة تأخذ مصفوفة كباراميتر و ترجعها معكوسة, ثم سنقوم بإستدعاء هذه الدالة.
ستلاحظ أننا قمنا بتعريف عدادين في الحلقة for, لأننا أردننا أن نلفت إنتباهك أيضاً أنه بإمكانك تعريف أكثر من عداد بداخل الحلقةfor.
مثال
public class Main {
// 1- بالمقلوب argument هنا قمنا بتعريف دالة ترجع محتوى المصفوفة نمررها لها كـ
public static int[] reverseArray(int[] array) {
int[] result = new int[array.length];
for (int i=0, j=result.length-1; i<array.length; i++, j--) {
result[j] = array[i];
}
return result;
}
public static void main(String[] args) {
// 2- هنا قمنا بتعريف مصفوفة
int[] numbers = { 1000, 2000, 3000, 4000, 5000 };
// 3- بالمقلوب numbers هنا قمنا بتعريف مصفوفة فارغة, سنستخدمها لحفظ قيم المصفوفة
int[] reversedNumbers;
// 4- reversedNumbers هنا قمنا بتخزين المصفوفة المقلوبة التي سترجعها الدالة في المصفوفة
reversedNumbers = reverseArray(numbers);
// 5- للتأكد فقط reversedNumbers هنا بعرض قيم المصفوفة
for (int i=0; i<reversedNumbers.length; i++) {
System.out.print(reversedNumbers[i] + " ");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل
5000 4000 3000 2000 1000
دوال جاهزة للتعامل مع المصفوفات
الكلاس Arrays هو كلاس جاهز في جافا, يحتوي على دوال نوعها static تطبق على جميع أنواع البيانات البدائية و تستخدم للترتيب, البحث, المقارنة, و لإعطاء قيم لعناصر المصفوفة, ذكرنا لك بعضها في هذا الجدول.
| إسم الدالة مع تعريفها | |
|---|---|
public static boolean equals(Object[] a1, Object[] a2)
تقارن المصفوفتين اللتين نمررهما لها مكان الباراميترين a1 و a2.ترجع true إذا كانتا متساويتين في الحجم و المحتوى. غير ذلك ترجع false.تابع القراءة » |
|
public static void sort(Object[] a)
ترتب قيم المصفوفة التي نمررها لها مكان الباراميتر a بشكل تصاعدي (ascending).تابع القراءة » |
|
public static void fill(Object[] a, Object val)
تستخدم لوضع قيمة أولية في جميع عناصر المصفوفة.مكان الباراميتر a نمرر المصفوفة التي سيتم وضع قيم أولية لعناصرها. و مكان الباراميتر val نمرر القيمة التي سيتم وضعها لهم.تابع القراءة » |
|
الكلاس System يحتوي أيضاً على دوال للتعامل مع المصفوفات, نذكر منها.
| إسم الدالة مع تعريفها | |
|---|---|
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
تستخدم لنسخ محتوى مصفوفة و وضعه في مصفوفة أخرى.تابع القراءة » |
|
Java الدالة equals()
تعريفها
تقارن المصفوفتين اللتين نمررهما لها مكان الباراميترين a1 و a2.
ترجع true إذا كانتا متساويتين في الحجم و المحتوى. غير ذلك ترجع false.
ملاحظة: في حال كانت المصفوفتان لا تحتويان أي قيمة ( أي قيمتهما تساوي null ) و قمنا بمقارنتهما سيكون الجواب true لأنهما متساويتين في الحجم و المحتوى.
بناؤها
public static boolean equals(Object[] a1, Object[] a2)
باراميترات
مكان الباراميتر
a1نمرر مصفوفة من أي نوع.مكان الباراميتر
a2نمرر مصفوفة من أي نوع.
قيمة الإرجاع
ترجع true إذا كانت المصفوفتين اللتين مررناها لها متساويتين في الحجم و المحتوى.
مثال
public class Main {
public static void main(String[] args) {
Object arr1[] = { 0, 1, 2, 3, 4, 5};
Object arr2[] = { 0, 1, 2, 3, 4, 5};
Object arr3[] = { 0, 1, 2, 3};
System.out.println( Arrays.equals(arr1, arr2) ); // لأن المصفوفتين متساويتين في الحجم و الطول true هنا سترجع
System.out.println( Arrays.equals(arr1, arr3) ); // لأنهما ليستا متساويتين false هنا سترجع
}
}
•سنحصل على النتيجة التالية عند التشغيل.
true false
Java الدالة sort()
تعريفها
ترتب قيم المصفوفة التي نمررها لها مكان الباراميتر a بشكل تصاعدي (ascending).
بناؤها
public static void sort(Object[] a)
باراميترات
مكان الباراميتر
aنمرر المصفوفة التي سيتم ترتيبها.
قيمة الإرجاع
لا ترجع قيمة.
أخطاء محتملة
ClassCastException: في حال كانت المصفوفة تحتوي عناصر مختلفة في النوع.
فمثلاً لا يمكنها مقارنة عنصر نوع قيمتهintمع عنصرString.
مثال
public class Main {
public static void main(String[] args) {
Object arr1[] = { 4, 1, 3, 5, 2 };
Object arr2[] = { 'c', 'b', 'a', 'd', 'e' };
Arrays.sort(arr1); // arr1 هنا قمنا بترتيب قيم المصفوفة
Arrays.sort(arr2); // arr2 هنا قمنا بترتيب قيم المصفوفة
// arr1 هنا قمنا بعرض قيم المصفوفة
System.out.print("arr1: ");
for(Object element: arr1) {
System.out.print( element + " ");
}
System.out.println();
// arr2 هنا قمنا بعرض قيم المصفوفة
System.out.print("arr2: ");
for(Object element: arr2) {
System.out.print( element + " ");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
arr1: 1 2 3 4 5 arr2: a b c d e
Java الدالة fill()
تعريفها
تستخدم لوضع قيمة أولية في جميع عناصر المصفوفة.
مكان الباراميتر a نمرر المصفوفة التي سيتم وضع قيم أولية لعناصرها. و مكان الباراميتر val نمرر القيمة التي سيتم وضعها لهم.
بناؤها
public static void fill(Object[] a, Object val)
باراميترات
مكان الباراميتر
aنمرر المصفوفة التي سيتم إعطائها القيم.مكان الباراميتر
valنمرر القيمة التي ستعطى لجميع عناصر المصفوفة.
قيمة الإرجاع
لا ترجع قيمة.
أخطاء محتملة
ArrayStoreException: في حال كانت القيمة لا يمكن تخزينها في المصفوفة بسبب اختلاف النوع.
مثال
public class Main {
public static void main(String[] args) {
Object arr1[] = new Object[5];
Object arr2[] = { 1, 2, 3, 4, 5};
Arrays.fill(arr1, "java"); // java التي كانت موجودة بالقيمة null هنا قمنا بتبديل القيم
Arrays.fill(arr2, 100); // 100 هنا قمنا بتبديل جميع الأرقام التي قمنا بوضعها في المصفوفة بالقيمة
// arr1 هنا قمنا بعرض قيم المصفوفة
System.out.print("arr1: ");
for(Object element: arr1) {
System.out.print( element + " ");
}
System.out.println();
// arr2 هنا قمنا بعرض قيم المصفوفة
System.out.print("arr2: ");
for(Object element: arr2) {
System.out.print( element + " ");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
arr1: java java java java java arr2: 100 100 100 100 100
Java الدالة arraycopy()
تعريفها
تستخدم لنسخ محتوى مصفوفة و وضعه في مصفوفة أخرى.
عند إستدعاء هذه الدالة عليك:
تحديد المصفوفة التي تريد نسخ قيم منها, أي الـ source.
تحديد العنصر الذي تريد أن تبدأ عملية النسخ من عنده, أي الـ starting postition in the source.
تحديد المصفوفة التي تريد نسخ القيم فيها, أي الـ destination.
تحديد العنصر الذي تريد أن تبدأ عملية اللصق عنده, أي الـ starting postition in the destination.
تحديد عدد العناصر التي نريد نسخها من المصفوفة الأولى إلى المصفوفة الثانية, أي الـ length.
بناؤها
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
باراميترات
مكان الباراميتر
srcنمرر المصفوفة التي سيتم نسخ قيم منها.مكان الباراميتر
srcPosنمرر رقم أول index عنصر في المصفوفةsrcتبدأ عملية النسخ من عنده.مكان الباراميتر
destنمرر المصفوفة التي ستتخزن فيها القيم التي تم نسخها.مكان الباراميتر
destPosنمرر رقم index أول عنصر في المصفوفةdestتبدأ عملية النسخ عنده.مكان الباراميتر
lengthنمرر عدد العناصر التي سيتم نسخها من المصفوفة الأولى إلى المصفوفة الثانية.
قيمة الإرجاع
لا ترجع قيمة.
أخطاء محتملة
IndexOutOfBoundsException: في حال وضع رقم index خارج عن حجم المصفوفة.
ArrayStoreException: في حال كان نوع المصفوفة
srcلا يمكن تخزينه في المصفوفةdest.NullPointerException: في حال كانت المصفوفة التي نمررها مكان الباراميتر
srcأو الباراميترdestفارغة.
مثال
public class Main {
public static void main(String[] args) {
int arr1[] = { 10, 20, 30, 40, 50, 60 };
int arr2[] = new int [6];
// هنا قمنا بنسخ جميع قيم المصفوفة الأولى و وضعهم في المصفوفة الثانية
System.arraycopy(arr1, 0, arr2, 0, 6);
// هنا قمنا بعرض جميع قيم عناصر المصفوفة الثانية
System.out.print( "arr2 = " );
for(int i=0; i<arr2.length; i++)
{
System.out.print( arr2[i] + ", " );
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
arr2 = 10, 20, 30, 40, 50, 60,
مفهوم النصوص
نص: تعني String في جافا, و الـ String عبارة عن مجموعة من الأحرف.
النوع String عبارة عن كلاس و لاحظ أنه يبدأ بحرف كبير مثل إسم أي كلاس في جافا.
إذاً عندما نقوم بتعريف String فنحن فعلياً نقوم بتعريف كائن, و لكننا نقول له متغير لأنه بشكل عام يسمح لنا بتخزين أي قيمة بداخله و لكنه في الأساس كائن نوعه String و ليس متغير عادي.
طريقة تعريف String
أبسط طريقة و الأكثر إستخداماً هي تعريفه مثل متغير عادي.
مثال
String greeting = "Hello world!";
تذكر أنك حتى لو قمت بتعريفه مثل متغير عادي, سيعتبره المترجم كائن.
و مثل أي كائن, تستطيع إنشاء كائن نوعه String من خلال الكلمة new و من خلال الكونستركتور, و ستفهم معنى هاتين الكلمتين في دروس لاحقة.
الكلاس String يحتوي على 13 كونستركتور يمكنك استخدامهم لوضع قيمة أولية في النص من خلال عدة مصادر, مثل من مصفوفة أحرف.
مثال
public class Main {
public static void main(String[] args) {
// هنا قمنا بتعريف مصفوفة من الأحرف
char[] helloArray = { 'h', 'e', 'l', 'l', 'o' };
// من خلال الكونستركتور helloString هنا وضعنا محتوى مصفوفة الأحرف كنص للكائن
String helloString = new String(helloArray);
// helloString هنا قمنا بعرض قيمة الكائن
System.out.println( helloString );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
hello
مفهوم الـ Concatenation
Concatenation تعني إضافة محتوى نص على نص, أي كأنك تنسخ نص و تلصقه في نهاية نص آخر.
يمكنك تطبيق الـ Concatenation في جافا بطريقتين:
بإستخدام العامل
+.أو بإستدعاء الدالة
concat()التي شرحناها لاحقاً في هذا الدرس.
مثال
•سنقوم بتعريف نصين و نعطيهم قيم, ثم سنعرف نص ثالث و نضع النصين السابقين فيه.
public class Main {
public static void main(String[] args) {
String s1 = "welcome to "; // هنا قمنا بتعريف النص الأول
String s2 = "harmash.com"; // هنا قمنا بتعريف النص الثاني
String s3 = s1 + s2; // أضفنا قيمة النصين السابقين في النص الثالث
System.out.println( s3 ); // هنا عرضنا قيمة النص الثالث لنتأكد إذا تمت عملية الإضافة كما نريد
}
}
•سنحصل على النتيجة التالية عند التشغيل.
welcome to harmash.com
مصطلحات مهمة عليك معرفة معناها
لنفترض أننا قمنا بتعريف String إسمه welcome و أعطيناه قيمة.
مثال
String welcome = "welcome to harmash.com";
سيتم تخزين محتوى النص في الذاكرة حرفاً حرفاً و بالترتيب و يبدأ بترقيمهم من الرقم 0 كما في هذه الصورة.
مصطلحات تقنية
عدد أحرف الـ
Stringيسمى length.رقم الخانة يسمى index.
إذا قمنا بأخذ جزء من الـ
Stringيسمى هذا الجزء substring.
أنت كمبرمج يمكنك إستغلال أرقام الخانات لتصل لمحتوى النص و تفعل به ما تشاء.
هناك دوال كثيرة جاهزة في جافا للتعامل مع النصوص, عليك فقط فهم طريقة عملها و استخدامها.
مثال
دوال الكلاس String في جافا
الكلاس String هو كلاس جاهز في جافا, يحتوي على دوال كثيرة للتعامل مع محتوى النصوص, سواء للبحث عن أحرف أو كلمات أو جمل, تجزيء النص, تغيير الـ Case للأحرف, دمج النصوص إلخ..
سنقسم دوال الكلاس String إلى 5 فئات أساسية كما في الجدول التالي:
دوال للبحث (Searching).
دوال للتجزيء (Substring).
دوال للتبديل (Replacing).
دوال للمقارنة (Comparison).
دوال للمعالجة (Manipulation).
ملاحظة
الكلاس String يعتبر Immutable class و هذا يعني أنك عندما تستدعي أي دالة على String, لن تعدل محتوى الـ String الذي قام باستدعائها, بل سترجع لك نسخة معدلة من هذا الـ String و سيبقى الـ String الأصلي كما هو.
دوال البحث الموجودة في الكلاس String
| إسم الدالة مع تعريفها | |
|---|---|
public char charAt(int index)
ترجع الحرف الموجود على الـ index الذي نمرره لها مكان الباراميتر index في الـ String الذي قام بإستدعائها.شاهد المثال » |
|
public int indexOf(String str)
تبحث في الـ String الذي قام بإستدعائها عن أول index يوجد إبتداءاَ من عنده نفس النص الذي نمرره لها مكان الباراميتر str و ترجعه.شاهد المثال » |
|
public int lastIndexOf(String str)
تبحث في الـ String الذي قام بإستدعائها عن آخر index يوجد إبتداءاَ من عنده نفس النص الذي نمرره لها مكان الباراميتر str و ترجعه.شاهد المثال » |
|
public boolean contains(CharSequence cs)
ترجع true في حال كان الـ String الذي قام بإستدعائها يحتوي على نفس قيمة النص الذي نمرره لها مكان الباراميتر cs ككائن من الكلاس CharSequence.غير ذلك ترجع false.شاهد المثال » |
|
دوال التجزيء الموجودة في الكلاس String
| إسم الدالة مع تعريفها | |
|---|---|
public String substring(int startIndex, int endIndex)
ترجع String عبارة عن جزء (substring) من الـ String الذي قام باستدعائها.شاهد المثال » |
|
public CharSequence subSequence(int startIndex, int endIndex)
ترجع كائن من الكلاس CharSequence عبارة عن جزء (substring) من الـ String الذي قام باستدعائها.شاهد المثال » |
|
public String[] split(String regex)
ترجع نسخة من الـ String الذي قام باستدعائها مقسمة على شكل مصفوفة نوعها String.مكان الباراميتر regex نمرر نص يحدد الطريقة التي سيتم على أساسها تقسيم الـ String و وضع كل قسم فيها في عنصر بداخل المصفوفة.شاهد المثال » |
|
دوال التبديل الموجودة في الكلاس String
| إسم الدالة مع تعريفها | |
|---|---|
public String replace(char oldSequence, char newSequence)
عند استدعائها نمرر لها قيمتين عبارة عن char أو CharSequence.تبحث في الـ String الذي قام باستدعائها عن القيمة الأولى التي نمررها لها و تبدلها بالقيمة الثانية التي نمررها لها.شاهد المثال » |
|
public String replaceAll(String regex, String replacement)
تستخدم للبحث في الـ String الذي قام باستدعائها عن Substring ما لتبديله بنص جديد.مكان الباراميتر regex نمرر نص يمثل النص الذي نريد استبداله.و مكان الباراميتر replacement نمرر النص الذي سيحل مكانه.إذاً هنا كلما تم إيجاد نفس قيمة الباراميتر regex سيتم إستبدالها بقيمة الباراميتر replacement.شاهد المثال » |
|
public String replaceFirst(String regex, String replacement)
تستخدم لتبديل نص محدد بداخل الـ String الذي قام باستدعائها.مكان الباراميتر regex نمرر نص يمثل النص الذي نريد استبداله.و مكان الباراميتر replacement نمرر النص الذي سيحل مكانه.إذاً هنا عند إيجاد نفس قيمة الباراميتر regex سيتم إستبدالها بقيمة الباراميتر replacement.شاهد المثال » |
|
دوال المقارنة الموجودة في الكلاس String
| إسم الدالة مع تعريفها | |
|---|---|
public boolean startsWith(String prefix)
تستخدم لمعرفة ما إذا كان الـ String الذي قام باستدعائها يبدأ بنص معين أم لا.إذا كانت قيمة الباراميتر prefix موجودة في بدايته ترجع true, غير ذلك ترجع false.شاهد المثال » |
|
public boolean endsWith(String suffix)
تستخدم لمعرفة ما إذا كان الـ String الذي قام باستدعائها ينتهي بنص معين أم لا.إذا كانت قيمة الباراميتر prefix موجودة في نهايته ترجع true, غير ذلك ترجع false.شاهد المثال » |
|
public boolean equals(Object anObject)
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة أي كائن نمرره لها مكان الباراميتر anObject.ترجع true في حال كانت جميع أحرفهم متطابقة, غير ذلك ترجع false.شاهد المثال » |
|
public boolean equalsIgnoreCase(String str)
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة الـ String الذي نمرره لها مكان الباراميتر str.ترجع true في حال كانت جميع أحرفهم متطابقة و لا يهمها إذا كانت الأحرف كبير أو صغيرة, غير ذلك ترجع false.شاهد المثال » |
|
public boolean contentEquals(StringBuffer sb)
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة كائن الـ StringBuffer الذي نمرره لها مكان الباراميتر sb.ترجع true في حال كانت جميع أحرفهم متطابقة, غير ذلك ترجع false.شاهد المثال » |
|
public int compareTo(String anotherString)
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة الـ String الذي نمرره لها مكان الباراميتر anotherString.ترجع 0 في حال كانت جميع أحرفهم متساوية. و ترجع قيمة أكبر أو أصغر من 0 تمثل الفارق بين كود الـ ASCII الخاص بأول حرف مختلف تم إيجاده بينهما. شاهد المثال » |
|
public int compareToIgnoreCase(String anotherString)
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة الـ String الذي نمرره لها مكان الباراميتر anotherString و لا يهمها إذا كانت الأحرف كبير أو صغيرة.ترجع 0 في حال كانت جميع أحرفهم متساوية. و ترجع قيمة أكبر أو أصغر من 0 تمثل الفارق بين كود الـ ASCII الخاص بأول حرف مختلف تم إيجاده بينهما. شاهد المثال » |
|
public boolean matches(String regex)
تقارن قيمة الـ String الذي قام باستدعائها مع التعبير النمطي الذي نمرره لها مكان الباراميتر regex.ترجع true في حال كانت جميع أحرفهم متطابقة, غير ذلك ترجع false.شاهد المثال » |
|
public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
تقارن جزء محدد في الـ String الذي قام باستدعائها مع جزء محدد في الـ String الذي نمرره لها مكان الباراميتر other.ترجع true في حال كانت جميع أحرفهم متطابقة, غير ذلك ترجع false.شاهد المثال » |
|
دوال المعالجة الموجودة في الكلاس String
| إسم الدالة مع تعريفها | |
|---|---|
public String concat(String s)
ترجع نسخة من الـ String الذي قام باستدعائها مضافاً عليه قيمة الـ String الذي نمرره لها مكان الباراميتر s.شاهد المثال » |
|
public static String copyValueOf(char[] data)
ترجع نسحة من مصفوفة الأحرف التي نمررها لها مكان الباراميتر data كـ String.شاهد المثال » |
|
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
تنسخ أحرف الـ String الذي قام باستدعائها بداخل مصفوفة الأحرف التي نمررها لها مكان الباراميتر dst مع تحديد النطاق الذي نريد نسخه و المكان الذي نريد وضع الأحرف فيه.شاهد المثال » |
|
public int hashCode()
ترجع قيمة الـ hash code للـ String الذي قام باستدعائها.شاهد المثال » |
|
public String intern()
تمنع وجود أكثر من String يحتوى على نفس المحتوى, لذلك هي مهمة جداً من أجل التخزين. فهي تسرع عمل المعالج و تحفظ مساحات الذاكرة.شاهد المثال » |
|
public int length()
ترجع رقم يمثل عدد أحرف الـ String الذي قام باستدعائها.شاهد المثال » |
|
public char[] toCharArray()
ترجع أحرف الـ String الذي قام باستدعائها كمصفوفة نوعها char.شاهد المثال » |
|
public String toLowerCase()
ترجع نسخة من الـ String الذي قام باستدعائها كل أحرفها صغيرة.شاهد المثال » |
|
public String toUpperCase()
ترجع نسخة من الـ String الذي قام باستدعائها كل أحرفها كبيرة.شاهد المثال » |
|
public String trim()
ترجع نسخة من الـ String الذي قام باستدعائها لا تحتوي على مسافات فارغة في بدايتها و نهايتها.شاهد المثال » |
|
public String valueOf(Object anObject)
ترجع أي قيمة نمررها لها مكان الباراميتر anObject كـ String.شاهد المثال » |
|
إرشادات مهمة لمعالجة الأخطاء
في حال وضعت رقم index غير موجود سيظهر لك الخطأ التالي
هذا الخطأ يعني أنك طلبت إرجاع قيمة خانة في الـ String غير موجودة, أو أنك حاولت تبديل قيمة خانة في الـ Stringهي في الأساس غير موجودة.
في الحالتين هذا يعني أنك خرجت عن مساحة الـ String المحجوزة في الذاكرة.
إذاً في حال ظهر لك هذا الخطأ إعرف أنك إستخدمت رقم index أكبر من أرقام الـ index الموجودين في الـ String, أو قد يكون رقم أصغر من صفر.
مثال
public class Main {
public static void main(String[] args) {
String s = "java is amazing";
System.out.println( s.charAt(30) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
•هذا يعني أنك طلبت إرجاع قيمة خانة في الـ String غير موجودة, و أظهر لنا أن الخانة رقم 30 تحديداً غير موجودة.
الدالة charAt()
تعريفها
ترجع الحرف الموجود على الـ index الذي نمرره لها مكان الباراميتر index في الـ String الذي قام بإستدعائها.
بمعنى آخر, نعطيها عنوان خانة في النص, فترجع لنا الحرف الموجود في هذه الخانة.
بناؤها
public char charAt(int index)
باراميترات
الـ
indexهو رقم index الحرف الذي سترجعه الدالة.
قيمة الإرجاع
ترجع الحرف الموجود على الـ index الذي نمرره لها مكان الباراميتر index.
مثال
public class Main {
public static void main(String[] args) {
String s = "java is amazing";
System.out.println( s.charAt(5) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
i
الدالة indexOf()
تعريفها
تبحث في الـ String الذي قام بإستدعائها عن أول index يوجد إبتداءاَ من عنده نفس النص أو الحرف الذي نمرره لها و ترجعه.
بمعنى آخر, نعطيها أي نص أو حرف, فترجع لنا رقم أول خانة وجد عندها.
إفتراضياً هذه الدالة تبدأ عملية البحث من الـ index رقم 0 إلى آخر index موجود في الـ String.
و في حال لم يتم العثور على النص المراد البحث عنه ترجع 1-
بناؤها
هناك أربع أشكال من هذه الدالة. أي يمكن إستدعاءها بأربع طرق مختلفة.
// الشكل الأول public int indexOf(char ch) // الشكل الثاني public int indexOf(char ch, int fromIndex) // الشكل الثالث public int indexOf(String str) // الشكل الرابع public int indexOf(String str, int fromIndex)
باراميترات
مكان الباراميتر
chنمرر الحرف الذي ستبحث عنه الدالة.مكان الباراميتر
strنمرر الـStringالذي ستبحث عنه الدالة.الباراميتر
fromIndexهو باراميتر إختياري, نضع مكانه رقم في حال أردنا جعل الدالة تبدأ عملية البحث من رقم index محدد و ليس من الـ index رقم 0.
قيمة الإرجاع
ترجع رقم يمثل أول index وجد عنده النص أو الحرف الذي مررناه لها, و ترجع 1- في حال لم يتم إيجاد تطابق.
مثال
public class Main {
public static void main(String[] args) {
String Str = "welcome to harmash.com, harmash is one of the best site for learning";
String subStr = "harmash";
System.out.println( Str.indexOf('a') ); // a وجد فيه الحرف index ستطبع أول
System.out.println( Str.indexOf('a', 14) ); // رقم 14 index و ستبدأ في البحث من الـ a وجد فيه الحرف index ستطبع أول
System.out.println( Str.indexOf(subStr) ); // subStr وجد فيه النص index ستطبع أول
System.out.println( Str.indexOf(subStr, 16) ); // رقم 16 index و ستبدأ في البحث من الـ subStr وجد فيه النص index ستطبع أول
System.out.println( Str.indexOf('x') ); // ستطبع 1- لأنها لن تجد هذا الحرف في كل النص
System.out.println( Str.indexOf('@') ); // ستطبع 1- لأنها لن تجد هذا الحرف في كل النص
System.out.println( Str.indexOf("hello") ); // ستطبع 1- لأنها لن تجد هذا النص في كل النص
}
}
•سنحصل على النتيجة التالية عند التشغيل.
12 15 11 24 -1 -1 -1
الدالة lastIndexOf()
تعريفها
تبحث في الـ String الذي قام بإستدعائها عن أول index يوجد إبتداءاَ من عنده نفس النص أو الحرف الذي نمرره لها و ترجعه.
بمعنى آخر, نعطيها أي نص أو حرف, فترجع لنا رقم آخر خانة وجد عندها.
إفتراضياً هذه الدالة تبدأ عملية البحث من الـ index الأخير إلى أول index موجود في الـ String.
و في حال لم يتم العثور على النص أو الحرف المراد البحث عنه ترجع 1-
بناؤها
هناك أربع أشكال من هذه الدالة. أي يمكن إستدعاءها بأربع طرق مختلفة.
// الشكل الأول public int lastIndexOf(char ch) // الشكل الثاني public int lastIndexOf(char ch, int toIndex) // الشكل الثالث public int lastIndexOf(String str) // الشكل الرابع public int lastIndexOf(String str, int toIndex)
باراميترات
مكان الباراميتر
chنمرر الحرف الذي ستبحث عنه الدالة.مكان الباراميتر
strنمرر الـStringالذي ستبحث عنه الدالة.الباراميتر
toIndexهو باراميتر إختياري, نضع مكانه رقم في حال أردنا جعل الدالة توقف عملية البحث عند رقم index محدد و ليس عند آخر index.
قيمة الإرجاع
ترجع رقم يمثل آخر index وجد عنده النص أو الحرف الذي مررناه لها, و ترجع 1- في حال لم يتم إيجاد تطابق.
مثال
public class Main {
public static void main(String[] args) {
String Str = "welcome to harmash.com, harmash is one of the best site for learning";
String subStr = "harmash";
System.out.println( Str.lastIndexOf('a') ); // a وجد فيه الحرف index ستطبع آخر
System.out.println( Str.lastIndexOf('a', 14) ); // رقم 14 index قبل الـ a وجد فيه الحرف index ستطبع آخر
System.out.println( Str.lastIndexOf(subStr) ); // subStr وجد فيه النص index ستطبع آخر
System.out.println( Str.lastIndexOf(subStr, 16) ); // رقم 16 index قبل الـ subStr وجد فيه النص index ستطبع آخر
System.out.println( Str.lastIndexOf('x') ); // ستطبع 1- لأنها لن تجد هذا الحرف في كل النص
System.out.println( Str.lastIndexOf('@') ); // ستطبع 1- لأنها لن تجد هذا الحرف في كل النص
System.out.println( Str.lastIndexOf("hello") ); // ستطبع 1- لأنها لن تجد هذا النص في كل النص
}
}
•سنحصل على النتيجة التالية عند التشغيل.
62 12 24 11 -1 -1 -1
الدالة contains()
تعريفها
ترجع true في حال كان الـ String الذي قام بإستدعائها يحتوي على نفس قيمة النص الذي نمرره لها مكان الباراميتر cs ككائن من الكلاس CharSequence.
بناؤها
public boolean contains(CharSequence cs)
باراميترات
مكان الباراميتر
csنمرر النص الذي سنبحث عنه ككائن من الكلاسCharSequence.
قيمة الإرجاع
ترجع true في حال كان الـ String الذي قام بإستدعائها يحتوي على نفس قيمة كائن الـ CharSequence الذي نمرره لها مكان الباراميتر cs.
غير ذلك ترجع false.
مثال
public class Main {
public static void main(String[] args) {
String s = "learn java in harmash.com";
CharSequence cs1 = "java";
CharSequence cs2 = "c++";
System.out.println( s.contains(cs1) );
System.out.println( s.contains(cs2) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
true false
الدالة substring()
تعريفها
ترجع String عبارة عن جزء (substring) من الـ String الذي قام باستدعائها.
عند إستدعاء هذه الدالة عندنا خيارين:
تحديد من أين تبدأ.
تحديد من أين تبدأ و أين تنتهي.
إذا قمنا فقط بتحديد أين تبدأ الـ substring, سترجع الدالة String تبدأ من الـ index الذي مررناه مكان الباراميتر startIndex لآخر index موجود في الـ String الذي قام باستدعائها.
إذا قمنا بتحديد أين تبدأ و أين تنتهي الـ substring, سترجع الدالة String تبدأ من الـ index الذي مررناه مكان الباراميتر startIndex إلى الـ index الذي مررناه مكان الباراميتر endIndex.
في حال كان رقم الـ index الذي مررناه لها مكان الباراميتر الأول أو الثاني غير موجود, سيظهر لك خطأ.
بناؤها
هناك شكلين من هذه الدالة. أي يمكن إستدعاءها بطريقتين مختلفتين.
// الشكل الأول public String substring(int startIndex) // الشكل الثاني public String substring(int startIndex, int endIndex)
باراميترات
الباراميتر
startIndexيحدد الـ index الذي ستبدأ الـ substring منه.الباراميتر
endIndexيحدد الـ index الذي تنتهي الـ substring عنده.
قيمة الإرجاع
ترجع String عبارة عن substring من الـ String الذي قام باستدعائها.
مثال
public class Main {
public static void main(String[] args) {
String s = "welcome to harmash.com, best site for learning";
System.out.println( s.substring(11) ); // رقم 11 index تبدأ من الـ substring هنا سترجع الدالة
System.out.println( s.substring(11, 22) ); // رقم 22 index رقم 11 و تنتهي قبل الـ index تبدأ من الـ substring هنا سترجع الدالة
}
}
•سنحصل على النتيجة التالية عند التشغيل.
harmash.com, best site for learning harmash.com
الدالة subSequence()
تعريفها
ترجع كائن من الكلاس CharSequence عبارة عن جزء ( substring أو subsequence نفس المعنى ) من الـ String الذي قام باستدعائها.
بناؤها
public CharSequence subSequence(int startIndex, int endIndex)
باراميترات
الباراميتر
startIndexيحدد الـ index الذي ستبدأ الـ subsequence منه.الباراميتر
endIndexيحدد الـ index الذي تنتهي الـ subsequence عنده.
قيمة الإرجاع
ترجع كائن من الكلاس CharSequence عبارة عن subSequence من الـ String الذي قام باستدعائها.
مثال
public class Main {
public static void main(String[] args) {
String s = "welcome to harmash.com, best site for learning";
// رقم 22 index رقم 11 و تنتهي قبل الـ index تبدأ من الـ subSequence هنا سترجع الدالة
System.out.println( s.subSequence(11, 22) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
harmash.com
الدالة split()
تعريفها
ترجع نسخة من الـ String الذي قام باستدعائها مقسمة على شكل مصفوفة نوعها String.
مكان الباراميتر regex نمرر نص يحدد الطريقة التي سيتم على أساسها تقسيم الـ String و وضع كل قسم فيها في عنصر بداخل المصفوفة.
بناؤها
هناك شكلين من هذه الدالة. أي يمكن إستدعاءها بطريقتين مختلفتين.
// الشكل الأول public String[] split(String regex) // الشكل الثاني public String[] split(String regex, int limit)
باراميترات
مكان الباراميتر
regexنمرر النص الذي ستستخدمه الدالة لتقسيم الـStringالذي قام باستدعائها.مكان الباراميتر
limitنمرر رقم عادي نضعه في حال أردنا تحديد عدد عناصر المصفوفة التي سترجعها الدالة.
قيمة الإرجاع
ترجع مصفوفة نوعها String تحتوي على نص كائن الـ String الذي قام باستدعائها.
المثال الأول
public class Main {
public static void main(String[] args) {
String str = "welcome-to-harmash.com";
// parts بعدها سيتم وضع المصفوفة التي سترجعها في المصفوفة .str ستعتمد على الرمز - حتى تجزء نص الكائن split() هنا الدالة
String[] parts = str.split("-");
String part1 = parts[0]; // welcome :الجزء الأول سيحتوي على النص
String part2 = parts[1]; // to :الجزء الثاني سيحتوي على النص
String part3 = parts[2]; // harmash.com :الجزء الثالث سيحتوي على النص
System.out.println( part1 );
System.out.println( part2 );
System.out.println( part3 );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
welcome to harmash.com
في البرامج الفعلية لا نستخدم هذا الأسلوب البدائي, بل نستخدم الحلقات للتعامل مع المصفوفات.
المثال الثاني
public class Main {
public static void main(String[] args) {
String str = "welcome-to-harmash.com";
String[] parts = str.split("-");
int i = 0;
while( i < parts.length ) {
System.out.println( parts[i] );
i++;
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
welcome to harmash.com
يوجد حلقة متقدمة إسمها foreach loop صممت خصيصاً للتعامل مع الـ arrays, سنشرحها بتفصيل في درس الـ arrays لكننا سنعطيك مثال كفكرة عامة.
المثال الثالث
public class Main {
public static void main(String[] args) {
String str = "welcome-to-harmash.com";
String[] parts = str.split("-");
for( String part : parts ) {
System.out.println( part );
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
welcome to harmash.com
الآن سنتطرق للباراميتر limit, فكرته فقط تحديد إلى كم جزء سيتقسم الـ String.
بمعنى آخر يحدد عدد عناصر المصفوفة التي سترجعها الدالة.
المثال الرابع
public class Main {
public static void main(String[] args) {
String str = "welcome-to-harmash.com";
String[] parts = str.split("-", 2);
for( String part : parts ) {
System.out.println( part );
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
welcome to-harmash.com
الدالة replace()
تعريفها
عند استدعائها نمرر لها قيمتين عبارة عن char أو CharSequence.
تبحث في الـ String الذي قام باستدعائها عن القيمة الأولى التي نمررها لها و تبدلها بالقيمة الثانية التي نمررها لها.
ملاحظة: الدالة replace() لا تقوم بتعديل نص الـ String الذي يستدعيها, بل ترجع نسخة ثانية معدلة عنه.
بناؤها
هناك شكلين من هذه الدالة. أي يمكن إستدعاءها بطريقتين مختلفتين.
// الشكل الأول public String replace(char oldChar, char newChar) // الشكل الثاني public String replace(CharSequence oldSequence, CharSequence newSequence)
باراميترات
الباراميتر
oldCharنمرر مكانه الحرف الذي نريد تبديله.الباراميتر
newCharنمرر مكانه الحرف الذي سيحل مكانه.الباراميتر
oldSequenceنمرر مكانه النص الذي نريد تبديله.الباراميتر
newSequenceنمرر مكانه النص الذي سيحل مكانه.
قيمة الإرجاع
ترجع الـ String الناتج من عملية التبديل.
مثال
public class Main {
public static void main(String[] args) {
String str = "welcome to harmash.com";
System.out.println( str.replace('a', 'X') );
System.out.println( str.replace(' ', '-') );
System.out.println( str.replace("com", "net") );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
welcome to hXrmXsh.com welcome-to-harmash.com welnete to harmash.net
الدالة replaceAll()
تعريفها
تستخدم للبحث في الـ String الذي قام باستدعائها عن Substring ما لتبديله بنص جديد.
مكان الباراميتر regex نمرر نص يمثل النص الذي نريد استبداله.
و مكان الباراميتر replacement نمرر النص الذي سيحل مكانه.
إذاً هنا كلما تم إيجاد نفس قيمة الباراميتر regex سيتم إستبدالها بقيمة الباراميتر replacement.
ملاحظة: الدالة replaceAllaode لا تقوم بتعديل نص الـ String الذي يستدعيها, بل ترجع نسخة ثانية معدلة عنه. كما أنها تعتبر متطورة أكثر من الدالة replace() من ناحية القدرة على البحث, لأننا نستطيع تبديل المحتوى على أساس الـ regex.
بناؤها
public String replaceAll(String regex, String replacement)
باراميترات
مكان الباراميتر
regexنمرر نص عبارة عن مجموعة رموز يحدد النص الذي نريد تبديله.مكان الباراميتر
replacementنمرر النص الذي سيحل مكانه.
قيمة الإرجاع
ترجع الـ String الناتج من عملية التبديل.
مثال
public class Main {
public static void main(String[] args) {
String str = "1 mhamad 205 wissam 333 ziad 55 88 hamada";
// هنا ستبدل الفراغ بـ - و سنعرض الناتج الذي سترجعه مباشرةً
System.out.println( str.replaceAll(" ", "-") );
// strWithOutNumbers هنا ستبدل الأرقام بلا شيء, أي ستمسح جميع الأرقام و سترجع الناتج في
String strWithOutNumbers = str.replaceAll("[0-9]+", "");
System.out.println( strWithOutNumbers );
// strOnlyNumbers هنا ستبدل الأحرف بلا شيء, أي ستمسح جميع الأحرف و سترجع الناتج في
String strOnlyNumbers = str.replaceAll("[a-zA-Z]+", "");
System.out.println( strOnlyNumbers );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
1-mhamad-205-wissam-333-ziad-55-88-hamada mhamad wissam ziad hamada 1 205 333 55 88
الدالة replaceFirst()
تعريفها
تستخدم لتبديل نص محدد بداخل الـ String الذي قام باستدعائها.
مكان الباراميتر regex نمرر نص يمثل النص الذي نريد استبداله.
و مكان الباراميتر replacement نمرر النص الذي سيحل مكانه.
إذاً هنا عند إيجاد نفس قيمة الباراميتر regex سيتم إستبدالها بقيمة الباراميتر replacement.
ملاحظة: الدالة replaceFirst() لا تقوم بتعديل نص الـ String الذي يستدعيها, بل ترجع نسخة ثانية معدلة عنه.
بناؤها
public String replaceFirst(String regex, String replacement)
باراميترات
مكان الباراميتر
regexنمرر نص عبارة عن مجموعة رموز يحدد النص الذي نريد تبديله.مكان الباراميتر
replacementنمرر النص الذي سيحل مكانه.
قيمة الإرجاع
ترجع الـ String الناتج من عملية التبديل.
مثال
public class Main {
public static void main(String[] args) {
String str = "Mhamad harmush 1 2 3";
// هنا ستبدل أول فراغ بـ - و ستعرض الناتج الذي سترجعه مباشرةً
System.out.println( str.replaceFirst(" ", "-") );
// strWithOutNumbers هنا ستبدل أول رقم بلا شيء, أي ستمسح أول رقم فقط و سترجع الناتج في
String strWithOutNumbers = str.replaceFirst("[0-9]+", "");
System.out.println( strWithOutNumbers );
// strOnlyNumbers هنا ستبدل أول كلمة بلا شيء, أي ستمسح أول نص فقط و سترجع الناتج في
String strOnlyNumbers = str.replaceFirst("[a-zA-Z]+", "");
System.out.println( strOnlyNumbers );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
Mhamad-harmush 1 2 3 Mhamad harmush 2 3 harmush 1 2 3
الدالة startsWith()
تعريفها
تستخدم لمعرفة ما إذا كان الـ String الذي قام باستدعائها يبدأ بنص معين أم لا.
إذا كانت قيمة الباراميتر prefix موجودة في بدايته ترجع true, غير ذلك ترجع false.
عند إستدعاء هذه الدالة عندنا خيارين:
عدم تحديد من أين تبدأ, و في هذه الحالة ستبدأ من أول حرف في الـ
Stringالذي قام باستدعائها.تحديد من أين تبدأ.
بناؤها
هناك شكلين من هذه الدالة. أي يمكن إستدعاءها بطريقتين مختلفتين.
// الشكل الأول public boolean startsWith(String prefix) // الشكل الثاني public boolean startsWith(String prefix, int toffset)
باراميترات
مكان البارميتر
prefixنمرر الـ substring الذي نريد معرفة ما إذا كان موجوداً في بداية الـStringأم لا.مكان البارميتر
toffsetنمرر الـ index الذي ستبدأ عملية الإختبار من عنده.
قيمة الإرجاع
ترجع true إذا كانت القيمة التي مررناها مكان الباراميتر toffset موجودة في بداية النص, أو في المكان الذي قمنا بتحديد بدأ عملية البحث عنده.
ترجع true أيضاً في حال قمنا باختبار قيمة فارغة.
غير ذلك ترجع false.
مثال
public class Main {
public static void main(String[] args) {
String str = "welcome to harmash.com";
System.out.println( str.startsWith("welcome to") ); // str لأنها موجودة في بداية النص true سترجع
System.out.println( str.startsWith("welc") ); // str لأنها موجودة في بداية النص true سترجع
System.out.println( str.startsWith("harmash") ); // str لأنها ليست موجودة في بداية النص false سترجع
System.out.println( str.startsWith("harmash", 11) ); // str رقم 11 في النص index لأنها موجودة في بداية الـ true سترجع
System.out.println( str.startsWith("") ); // لأننا نختبر قيمة فارغة true سترجع
}
}
•سنحصل على النتيجة التالية عند التشغيل.
true true false true true
الدالة endsWith()
تعريفها
تستخدم لمعرفة ما إذا كان الـ String الذي قام باستدعائها ينتهي بنص معين أم لا.
إذا كانت قيمة الباراميتر prefix موجودة في نهايته ترجع true, غير ذلك ترجع false.
بناؤها
public boolean endsWith(String suffix)
باراميترات
مكان الباراميتر
suffixنمرر الـ substring الذي نريد معرفة ما إذا كان موجوداً في نهاية الـStringأم لا.
قيمة الإرجاع
ترجع true إذا كانت القيمة التي نختبرها موجودة في نهاية النص.
و ترجع true أيضاً في حال قمنا باختبار قيمة فارغة.
غير ذلك ترجع false.
مثال
public class Main {
public static void main(String[] args) {
String str = "welcome to harmash.com";
System.out.println( str.endsWith("harmash.com") ); // str لأنها موجودة في نهاية النص true سترجع
System.out.println( str.endsWith("harmash") ); // str لأنها ليست موجودة في نهاية النص false سترجع
System.out.println( str.endsWith("") ); // لأننا نختبر قيمة فارغة true سترجع
}
}
•سنحصل على النتيجة التالية عند التشغيل.
true false true
الدالة equals()
تعريفها
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة أي كائن نمرره لها مكان الباراميتر anObject.
ترجع true في حال كانت جميع أحرفهم متطابقة و لا تساوي الكلمة null, غير ذلك ترجع false.
بناؤها
public boolean equals(Object anObject)
باراميترات
مكان الباراميتر
anObjectنمرر الكائن الذي نريد مقارنته مع الـString.
قيمة الإرجاع
ترجع
trueفي حال كانت قيمة الكائن الذي نمرره مكان الباراميترanObjectتساوي الـStringالذي قام باستدعائها.ترجع
falseفي حال كانت قيمة الكائن الذي نمرره مكان الباراميترanObjectلا تساوي قيمة الـStringالذي قام باستدعائها.
مثال
public class Main {
public static void main(String[] args) {
String s1 = "hello my name is Mhamad";
String s2 = s1;
String s3 = "at 20 years old, i made harmash.com";
System.out.println( s1.equals(s2) ); // s2 تساوي قيمة s1 لأن قيمة true هنا سترجع
System.out.println( s1.equals(s3) ); // s3 لا تساوي قيمة s1 لأن قيمة false هنا سترجع
}
}
•سنحصل على النتيجة التالية عند التشغيل.
true false
الدالة equalsIgnoreCase()
تعريفها
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة الـ String الذي نمرره لها مكان الباراميتر str.
ترجع true في حال كانت جميع أحرفهم متطابقة و لا يهمها إذا كانت الأحرف كبير أو صغيرة, غير ذلك ترجع false.
بناؤها
public boolean equalsIgnoreCase(String anotherString)
باراميترات
مكان الباراميتر
anotherStringنمرر الـStringالذي نريد مقارنته مع الـStringالذي قام باستدعاء الدالة.
قيمة الإرجاع
ترجع
trueفي حال كانت قيمة الـStringالذي نمرره مكان الباراميترanotherStringتساوي قيمة الـStringالذي قام باستدعائها.ترجع
falseفي حال كانت قيمة الـStringالذي نمرره مكان الباراميترanotherStringلا تساوي قيمة الـStringالذي قام باستدعائها.
مثال
public class Main {
public static void main(String[] args) {
String s1 = "hello my name is Mhamad";
String s2 = "HELLO MY NAME IS MHAMAD";
String s3 = s2;
// لأنه لا يهمها إذا كان يوجد إختلاف في حجم الأحرف طالما أن الأحرف التي تم مقارنتها هي نفسها true هنا سترجع
System.out.println( s1.equalsIgnoreCase(s2) );
// s3 تساوي تماماً قيمة s2 لأن قيمة true هنا سترجع
System.out.println( s2.equalsIgnoreCase(s3) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
true true
الدالة contentEquals()
تعريفها
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة كائن الـ StringBuffer الذي نمرره لها مكان الباراميتر sb.
ترجع true في حال كانت جميع أحرفهم متطابقة, غير ذلك ترجع false.
بناؤها
public boolean contentEquals(StringBuffer sb)
باراميترات
مكان الباراميتر
sbنمرر كائن الـStringBufferالذي نريد مقارنته مع الـString.
قيمة الإرجاع
ترجع
trueفي حال كانت قيمة الكائن الذي نمرره مكان الباراميترsbتساوي قيمة الـStringالذي قام باستدعائها.ترجع
falseفي حال كانت قيمة الكائن الذي نمرره مكان الباراميترsbلا تساوي قيمة الـStringالذي قام باستدعائها.
مثال
public class Main {
public static void main(String[] args) {
String s = "welcome to harmash.com";
StringBuffer sb1 = new StringBuffer("welcome to harmash.com");
System.out.println( s.contentEquals(sb1) ); // sb1 تساوي قيمة s لأن قيمة true هنا سترجع
StringBuffer sb2 = new StringBuffer("welcome to java world");
System.out.println( s.contentEquals(sb2) ); // sb2 لا تساوي قيمة s لأن قيمة false هنا سترجع
}
}
•سنحصل على النتيجة التالية عند التشغيل.
true false
الدالة compareTo()
تعريفها
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة أي كائن نمرره لها مكان الباراميتر anotherString أو anObject.
ترجع 0 في حال كانت جميع أحرفهم متساوية. و ترجع قيمة أكبر أو أصغر من 0 تمثل الفارق بين كود الـ ASCII الخاص بأول حرف مختلف تم إيجاده بينهما.
بناؤها
هناك شكلين من هذه الدالة. أي يمكن إستدعاءها بطريقتين مختلفتين.
// الشكل الأول public int compareTo(Object anObject) // الشكل الثاني public int compareTo(String anotherString)
باراميترات
مكان الباراميتر
anObjectنمرر الكائن الذي ستتم مقارنته.مكان الباراميتر
anotherStringنمرر الـStringالذي ستتم مقارنته.
قيمة الإرجاع
ترجع 0 في حال كانت جميع أحرفهم متساوية.
ترجع قيمة أكبر أو أصغر من 0 تمثل الفارق بين كود الـ ASCII الخاص بأول حرف مختلف تم إيجاده بينهما.
مثال
public class Main {
public static void main(String[] args) {
// ASCII معلومة: في ترميز الـ
// h = 104 H = 72
String s1 = "welcome to harmash.com, one of the best websites for learning";
String s2 = "welcome to Harmash.com, amazing website for programmers";
String s3 = s1;
System.out.println( s1.compareTo(s2) ); // h - H = 104 - 72 = 32
System.out.println( s2.compareTo(s1) ); // h - H = 72 - 104 = -32
System.out.println( s1.compareTo(s3) ); // هنا سترجع 0 لأنه لا يوجد أي فارق بينهما
}
}
•سنحصل على النتيجة التالية عند التشغيل.
32 -32 0
الدالة compareToIgnoreCase()
تعريفها
تقارن قيمة الـ String الذي قام باستدعائها مع قيمة الـ String الذي نمرره لها مكان الباراميتر str و لا يهمها إذا كانت الأحرف كبير أو صغيرة.
ترجع 0 في حال كانت جميع أحرفهم متساوية. و ترجع قيمة أكبر أو أصغر من 0 تمثل الفارق بين كود الـ ASCII الخاص بأول حرف مختلف تم إيجاده بينهما.
بناؤها
public int compareToIgnoreCase(String anotherString)
باراميترات
مكان الباراميتر
anotherStringنمرر الـStringالذي ستتم مقارنته.
قيمة الإرجاع
ترجع 0 في حال كانت جميع أحرفهم متساوية.
ترجع قيمة أكبر أو أصغر من 0 تمثل الفارق بين كود الـ ASCII الخاص بأول حرف مختلف تم إيجاده بينهما.
مثال
public class Main {
public static void main(String[] args) {
// ACII معلومة: في ترميز الـ
// A = 65 a = 97 o = 111
// ملاحظة: أثناء مقارنتهم ستعتبر جميع الأحرف أحرف صغيرة
// تساوي 97 Amazing الكبيرة في كلمة A لذلك ستعتبر الـ
String s1 = "welcome to harmash.com, one of the best websites for learning";
String s2 = "Welcome To Harmash.com, Amazing Website For Programmers";
String s3 = s1;
System.out.println( s1.compareToIgnoreCase(s2) ); // o - A = o - a = 111 - 97 = 14
System.out.println( s2.compareToIgnoreCase(s1) ); // A - o = a - o = 97 - 111 = 14
System.out.println( s1.compareToIgnoreCase(s3) ); // هنا سترجع 0 لأنه لا يوجد أي فارق بينهما
}
}
•سنحصل على النتيجة التالية عند التشغيل.
14 -14 0
الدالة matches()
تعريفها
تختبر قيمة الـ String الذي قام باستدعائها لمعرفة ما إذا كان يطابق التعبير النمطي الذي نمرره لها مكان الباراميتر regex.
ترجع true في حال كان الـ String الذي قام باستدعائها يطابق التعبير النمطي, غير ذلك ترجع false.
بناؤها
public boolean matches(String regex)
باراميترات
مكان الباراميتر
regexنمرر نص عبارة عن مجموعة رموز يحدد النص الذي نريد معرفة ما إذا كان موجوداً في الـStringالذي قام باستدعائها أم لا.
قيمة الإرجاع
ترجع
trueفي حال كان الـStringالذي قام باستدعائها يطابق التعبير النمطي.ترجع
falseفي حال كان الـStringالذي قام باستدعائها لا يطابق التعبير النمطي.
مثال
public class Main {
public static void main(String[] args) {
String str = "welcome to harmash.com";
System.out.println( str.matches("harmash") ); // false ترجع
System.out.println( str.matches("welcome(.*)") ); // true ترجع
System.out.println( str.matches("(.*)harmash(.*)") ); // true ترجع
}
}
•سنحصل على النتيجة التالية عند التشغيل.
false true true
•أولاً سأل نفسه التالي: هل str يحتوي فقط على النص harmash؟
فكان جواب الشرط false.
•ثانياً سأل نفسه التالي: هل str يحتوي على النص welcome و يوجد بعده أي شيء آخر؟
فكان جواب الشرط true.
•ثالثاً سأل نفسه التالي: هل str يحتوي على النص harmash و يوجد قبله و بعده أي شيء آخر؟
فكان جواب الشرط true.
الدالة regionMatches()
تعريفها
تقارن جزء محدد في الـ String الذي قام باستدعائها مع جزء محدد في الـ String الذي نمرره لها مكان الباراميتر other.
ترجع true في حال كانت جميع أحرفهم متطابقة, غير ذلك ترجع false.
بناؤها
هناك شكلين من هذه الدالة. أي يمكن إستدعاءها بطريقتين مختلفتين.
// الشكل الأول public boolean regionMatches(int toffset, String other, int ooffset, int len) // الشكل الثاني public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
باراميترات
مكان الباراميتر
toffsetنمرر رقم يحدد نقطة بداية الجزء الموجود في الـStringالذي قام باستدعاء الدالة.مكان الباراميتر
otherنمرر الـStringالذي سيتم مقارنته مع الـStringالذي قام باستدعاء الدالة.مكان الباراميتر
ooffsetنمرر رقم يحدد نقطة بداية الجزءother.مكان الباراميتر
lenنمرر عدد الأحرف التي نريدها أن تتقارن في كلا الجزأين.مكان الباراميتر
ignoreCaseإذا مررنا مكانه القيمةtrue, فلن تؤثر الأحرف الكبيرة أو الصغيرة عند المقارنة.
قيمة الإرجاع
ترجع
trueفي حال تطابق الجزأين.
مثال
public class Main {
public static void main(String[] args) {
String s1 = "welcome to harmash.com";
String s2 = "harmash";
String s3 = "HARMASH";
System.out.println( s1.regionMatches(11, s2, 0, 7) );
System.out.println( s1.regionMatches(11, s3, 0, 7) );
System.out.println( s1.regionMatches(true, 11, s3, 0, 7) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
true false true
الدالة concat()
تعريفها
ترجع نسخة من الـ String الذي قام باستدعائها مضافاً عليه قيمة الـ String الذي نمرره لها مكان الباراميتر s.
بناؤها
public String concat(String s)
باراميترات
مكان الباراميتر
sنمرر الـStringالذي سيضاف في آخر الـStringالذي قام بإستدعاء الدالة.
قيمة الإرجاع
ترجع String جديد يحتوي على قيمة الـ String الذي قام باستدعاء الدالة و قيمة الـ String الذي نمرره للدالة.
مثال
public class Main {
public static void main(String[] args) {
String s1 = "This part is from s1. ";
String s2 = "This part is from s2";
// s3 بعدها الجواب الذي سيرجع سيتخزن في .s1 في آخر s2 ستضيف الدالة قيمة
String s3 = s1.concat( s2 );
System.out.println( s3 );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
This part is from s1. This part is from s2
Javaالدالة copyValueOf()
تعريفها
ترجع نسحة من مصفوفة الأحرف التي نمررها لها مكان الباراميتر data كـ String.
بناؤها
هناك شكلين من هذه الدالة. أي يمكن إستدعاءها بطريقتين مختلفتين.
// الشكل الأول public static String copyValueOf(char[] data) // الشكل الثاني public static String copyValueOf(char[] data, int offset, int count)
باراميترات
مكان الباراميتر
dataنمرر مصفوفة الأحرف التي نريد تحويلها لنص.offsetهو باراميتر إختياري يمكنك أن تمرر مكانه رقم الـ index الذي تريد بدأ عملية النسخ من عنده.countهو باراميتر إختياري يمكنك أن تمرر مكانه عدد الأحرف التي نريد نسخها من المصفوفة التي تمررها مكان الباراميترdata.
قيمة الإرجاع
ترجع String تحتوي على أحرف المصفوفة التي نمررها للدالة.
مثال
public class Main {
public static void main(String[] args) {
char[] ch = {'I', ' ', 'l', 'o', 'v', 'e', ' ', 'j', 'a', 'v', 'a'};
String s = "";
s = String.copyValueOf( ch );
System.out.println( s );
s = String.copyValueOf( ch, 2, 4 );
System.out.println( s );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
I love java love
الدالة getChars()
تعريفها
تنسخ أحرف الـ String الذي قام باستدعائها بداخل مصفوفة الأحرف التي نمررها لها مكان الباراميتر dst مع تحديد النطاق الذي نريد نسخه و المكان الذي نريد وضع الأحرف فيه.
بناؤها
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
باراميترات
مكان الباراميتر
srcBeginنمرر رقم يمثل index أول حرف في الـStringتبدأ عملية النسخ من عنده.مكان الباراميتر
srcEndنمرر رقم يمثل index الحرف في الـStringالذي تتوقف عملية النسخ عنده.مكان الباراميتر
dstنمرر المصفوفة التي ستتخزن فيها النسخة.مكان الباراميتر
dstBeginنمرر رقم يمثل index أول حرف في المصفوفة تبدأ عملية اللصق عنده.
قيمة الإرجاع
لا ترجع قيمة.
مثال
public class Main {
public static void main(String[] args) {
String str = "welcome to harmash.com";
char[] arr = new char[10];
str.getChars( 0, 10, arr, 0 );
System.out.println( "Copied value = " + arr );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
Copied value = welcome to
الدالة hashCode()
تعريفها
ترجع قيمة الـ hash code للـ String الذي قام باستدعائها.
الخوارزمية التي يطبقها مترجم لغة جافا لحساب قيمة الـ hash code:
Hash Code = s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1].
بناؤها
public int hashCode()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع رقم يمثل قيمة الـ hash code للـ String الذي قام باستدعائها.
مثال
public class Main {
public static void main(String[] args) {
String s = "welcome to harmash.com";
System.out.println( "The hascode of s is: " + s.hashCode() );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
The hashcode of s is: 1813959918
الدالة intern()
تعريفها
تمنع وجود أكثر من String يحتوى على نفس المحتوى, لذلك هي مهمة جداً من أجل التخزين. فهي تسرع عمل المعالج و تحفظ مساحات الذاكرة.
و يمكنك أن تتخيل أنها تجعلك تصل للمحتوى و تتعامل معه دون الإهتمام بأصل نوع المحتوى, سترى ذلك في المثال.
بناؤها
public String intern()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع قيمة الـ String كقيمة بسيطة ليس لها نوع محدد.
مثال
public class Main {
public static void main(String[] args) {
String s1 = "welcome to harmash.com";
String s2 = new String("welcome to harmash.com");
System.out.println( s1 == s2 ); // false لذلك سيرجع s2 ليس مطابقاً لنوع الـ s1 هنا سيعتبر أن نوع الـ
System.out.println( s1 == s2.intern() ); // true هنا سيقارن قيمهم فقط دون الإهتمام بنوعهم, لذلك سيرجع
}
}
•سنحصل على النتيجة التالية عند التشغيل.
false true
الدالة length()
تعريفها
ترجع رقم يمثل عدد أحرف الـ String الذي قام باستدعائها.
بناؤها
public int length()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع رقم يمثل عدد أحرف الـ String الذي قام باستدعائها.
مثال
public class Main {
public static void main(String[] args) {
String s1 = "welcome to harmash.com";
String s2 = new String("java is object oriented programming language");
System.out.println( "length of s1 = " + s1.length() );
System.out.println( "length of s2 = " + s2.length() );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
length of s1 = 22 length of s2 = 44
الدالة toCharArray()
تعريفها
ترجع أحرف الـ String الذي قام باستدعائها كمصفوفة نوعها char.
بناؤها
public char[] toCharArray()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع مصفوفة نوعها char تحتوي على نفس أحرف الـ String و لها نفس حجمه, أي عدد عناصرها يساوي عدد أحرف النص.
مثال
public class Main {
public static void main(String[] args) {
String s = "welcome to harmash.com";
System.out.println( s.toCharArray() );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
welcome to harmash.com
الدالة toLowerCase()
تعريفها
ترجع نسخة من الـ String الذي قام باستدعائها كل أحرفها صغيرة.
بناؤها
public String toLowerCase()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع نسخة من الـ String الذي قام باستدعائها كل أحرفها صغيرة.
مثال
public class Main {
public static void main(String[] args) {
String s = "Welcome To Harmash.Com";
System.out.println( s.toLowerCase() );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
welcome to harmash.com
الدالة toUpperCase()
تعريفها
ترجع نسخة من الـ String الذي قام باستدعائها كل أحرفها كبيرة.
بناؤها
public String toUpperCase()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع نسخة من الـ String الذي قام باستدعائها كل أحرفها كبيرة.
مثال
public class Main {
public static void main(String[] args) {
String s = "Welcome To Harmash.Com";
System.out.println( s.toUpperCase() );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
WELCOME TO HARMASH.COM
الدالة trim()
تعريفها
ترجع نسخة من الـ String الذي قام باستدعائها لا تحتوي على مسافات فارغة في بدايتها و نهايتها.
بناؤها
public String trim()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
ترجع نسخة من الـ String الذي قام باستدعائها لا تحتوي على مسافات فارغة في بدايتها و نهايتها.
مثال
public class Main {
public static void main(String[] args) {
String s = " welcome to harmash.com ";
System.out.println( s.trim() );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
welcome to harmash.com
الدالة valueOf()
تعريفها
ترجع أي قيمة نمررها لها عند استدعاءها كـ String.
بناؤها
هناك تسع أشكال من هذه الدالة. أي يمكن إستدعاءها بتسع مختلفتين.
// الطريقة الأولى public String valueOf(boolean b) // الطريقة الثانية public String valueOf(char c) // الطريقة الثالثة public String valueOf(char[] data) // الطريقة الرابعة public String valueOf(char[] data, int offset, int count) // الطريقة الخامسة public String valueOf(double d) // الطريقة السادسة public String valueOf(float f) // الطريقة السابعة public String valueOf(int i) // الطريقة الثامنة public String valueOf(long l) // الطريقة التاسعة public String valueOf(Object obj)
باراميترات
بشكل عام تقبل أي قيمة شيء نمررها لها.
بالنسبة للدالة
public String valueOf(char[] data, int offset, int count).مكان الباراميتر
dataنمرر مصفوفة الأحرف التي نريد تحويلها لنص.offsetهو باراميتر إختياري يمكنك أن تمرر مكانه رقم الـ index الذي تريد بدأ عملية النسخ من عنده.countهو باراميتر إختياري يمكنك أن تمرر مكانه عدد الأحرف التي نريد نسخها من المصفوفة التي تمررها مكان الباراميترdata.
قيمة الإرجاع
ترجع أي قيمة نمررها لها عند استدعاءها كـ String.
مثال
public class Main {
public static void main(String[] args) {
int i = 10;
double d = 55.99;
long l = 123456;
boolean b = true;
char[] arr = {'j', 'a', 'v', 'a'};
System.out.println( "Return Value: " + String.valueOf(i) );
System.out.println( "Return Value: " + String.valueOf(d) );
System.out.println( "Return Value: " + String.valueOf(l) );
System.out.println( "Return Value: " + String.valueOf(b) );
System.out.println( "Return Value: " + String.valueOf(arr) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
Return Value: 10 Return Value: 55.99 Return Value: 123456 Return Value: true Return Value: java