السلام عليكم
أريد معرفة اسم الدالة التي تستقبل محرف و تعيد رقم الخانة التي يوجد بها المحرف, تماما على عكس الدالة charAt, بانتظاركم يا إخوة.
شكرا لكم مسبقا.
السلام عليكم
أريد معرفة اسم الدالة التي تستقبل محرف و تعيد رقم الخانة التي يوجد بها المحرف, تماما على عكس الدالة charAt, بانتظاركم يا إخوة.
شكرا لكم مسبقا.
تم تعديل هذه المشاركة بواسطة khaled_prg في 3 يناير 2012 في 01:24
السلام عليكم ..
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
المشلكة أنني أعمل على الكلاس StinrgBuffer !!
السلام عليكم ...
public class ST
{
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("Hello World");
int i = sb.toString().indexOf("r");
System.out.println(i);
}
}تعديل على المشاركة :
الصف StringBuffer فيه الــ Method المسمى indexOf دون الحاجة لتحويله إلى String , مثال :
public class ST
{
public static void main(String[] args)
{
StringBuffer sb = new StringBuffer();
sb.append("Hello World");
int i = sb.indexOf("r");
System.out.println(i);
}
}تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 4 يناير 2012 في 00:35
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
الله يسلمك أخوي, هذا ما كنت أبحث عنه بالضبط, لك جزيل الشكر.
بالمناسبة, هل الـ method ذات الإسم toString نستطيع من خلالها تطبيق دوال الصنف String على StringBuffer ؟
شكرا مرة أخرى.
السلام عليكم ...
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
جميل جدا, أحسنت.
طيب, ماذا عن العكس ؟؟
إذا أردنا تطبيق الــ methods الخاصة بالكلاس StringBuffer على الكلاس String ؟
احترامي لك.
تم تعديل هذه المشاركة بواسطة khaled_prg في 3 يناير 2012 في 16:02
السلام عليكم ..
.. لا يمكن ذلك ..كل كلاس يطبق الــ methods الخاصة به (و بآبائه فقط).. هذا هو مفهوم البرمجة غرضية التوجه Object-Oriented Programming ..اقتباسإذا أردنا تطبيق الــ methods الخاصة بالكلاس StringBuffer على الكلاس String ؟
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
اقتباسلا يمكن ذلك ..كل كلاس يطبق الــ methods الخاصة به (و بآبائه فقط).. هذا هو مفهوم البرمجة غرضية التوجه Object-Oriented Programming ..
أعرف ذلك :)
كنت أسأل عن ما إذا كانت هناك methode في الــ object الأب الخاص بالكلاس StringBuffer بحيث يمكننا من خلالها إعادة الكائن و استخدامه في الكلاس Stinrg
السلام عليكم ..
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
السلام عليكم نقاش جميل
لكن عندي استفسار ما هو الفرق بين الصنف string وبين الصنف StringBuffer
يعني في عجالةواختصار
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
السلام عليكم
حسب ما فهمت من كلامكم فإن :
الــ Methode ذات الإسم toString مُعرفة في الصنف الأب String حيث تقوم هذه الــ Methode بتحويل سلسلة محارف من StringBuffer إلى String, بعد ذلك يمكننا استخدام أي Methode موجودة في الصنف String, مثال :
System.out.println(Min.toString().concat(" koukou"));هلا كلامي صحيح ؟
بالمناسبة, قمت بوضع نفس الموضوع في منتدى developpez, و هذا الرابط لمن يريد الدخول في النقاش :
تم تعديل هذه المشاركة بواسطة khaled_prg في 3 يناير 2012 في 22:33
اقتباسالسلام عليكم نقاش جميل
و عليكم السلام, مرحبا بك :)
اقتباسما هو الفرق بين الصنف string وبين الصنف StringBuffer
باختصار شديد : أي كائن تم إنشائه من طرف الكلاس String فهو غير قابل للتعديل على عكس الكلاس StringBuffer
بمعنى أنه لا يمكننا إضافة/حذف أحرف جديدة إلى/من سلسلة المحارف التي تم إنشائها من طرف الكلاس String, انظر المثال :
String s1 = "toto"; s1 = s1 + "encore toto";
الكود غير صحيح, لأنه لا يمكننا تغيير ما بداخل الــ object التابع للكلاس String, إذا أردنا إضافة أو حذف عناصر من الــ Object ذو الإسم s1 فيلزمنا التعامل مع الـ Methods مثل concat إذا أردنا دمج عدة سلاسل في آن واحد.
أما بالنسبة للصنف StringBuffer فيمكننا التعامل معه مباشرة لأنه قابل للتعديل .. أضف إلى ذلك أنه يملك مجموعة Methods تُمكننا من فعل ما نريد.
هذا رابط يشرح الفرق بين String,StringBuffer,StringBuilder :
تم تعديل هذه المشاركة بواسطة khaled_prg في 3 يناير 2012 في 22:51
السلام عليكم ..
String s = "Hello";
فإن المترجم يقوم بترجمته إلى :
String s = new String("Hello");لأنه كما هو معلوم لنا أن new هي التي تحجز مكان الكائن في الذاكرة (ياستثناء الأنماط البسيطة primitive) .. و بالتالي عند الحاجة لتعديل سلسلة نصية مثلا :
s1 = s1 + "World";
فإن المترجم يحوله إلى :
s1 = new String(s1+"world");
أي يقوم بحجز مكان جديد لــ S1 و يضع فيه القيمة الجديدة .. و هذا يسبب استهلاك كبير في الذكرة و بالتالي يؤثر على الأداء ...لذلك تم حل المشكلة بإيجاد الصف StringBuffer الذي يمكننا الإضافة و التغيير عليه دون أن يتم حجزه من جديد عند كل عملية تعديل (لا أعرف ما هي البنية الداخلية له .. ربما لوعدنا للكود المصدري للـ JDK ..لعرفنا ) ..
فقط تصحيح : الــ Method المسمى toString معرفة بالصف Object الذي قلنا أنه الأب لكل صفوف الجافا و بالتالي حسب مفهوم الوراثة فإن كل صفوف الجافا فيها الــ method المسمى toString ..اقتباسالــ Methode ذات الإسم toString مُعرفة في الصنف الأب String حيث تقوم هذه الــ Methode بتحويل سلسلة محارف من StringBuffer إلى String, بعد ذلك يمكننا استخدام أي Methode موجودة في الصنف String,
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
اقتباستبين ان الصف StringBuffer فيه method تعيد الــ index الخاص بحرف(indexOf) .. دون الحاجة إلى تحويله إلى النوع String (و حجز المزيد من الذاكرة)
هذا ما كنت أناقشه قبل قليل مع أصدقاء لي في هذا الموضوع :
الصنف StringBuffer يحتوي على overloading للدالة indexOf بطريقتين, الأولي تستقبل فيها String أما الثانية فتستقبل فيها String و int, لاحظ أنه لا يوجد overloading للدالة indexOf بحيث تستقبل character وهنا تكمن المشكلة, لو افترضنا أن الحرف الذي ستستقبله الدالة غير معروف مُسبقا (أو سيتم أخذه من سلسلة محارف مستقلة), كيف ستعمل الــ indexOf الموجودة في الصنف StringBuffer ؟؟
مثال :
public class Nm_Position {
public static void main(String args[]){
StringBuffer mon_nom = new StringBuffer("Khaled_PRG");
int nb_position;
for(int i = 0;i <= mon_nom.length() - 1 ;i++)
{
nb_position = mon_nom.toString().indexOf(mon_nom.charAt(i));
System.out.println("La position de "+mon_nom.charAt(i)+" égal à "+nb_position);
}
}
}اقتباسيقوم بحجز مكان جديد لــ S1 و يضع فيه القيمة الجديدة .. و هذا يسبب استهلاك كبير في الذكرة
إذا كان الأمر هكذا, ألا يجب علينا تحرير المساحة التي كانت تشغلها S1 ؟
اقتباسالــ Method المسمى toString معرفة بالصف Object الذي قلنا أنه الأب لكل صفوف الجافا و بالتالي حسب مفهوم الوراثة فإن كل صفوف الجافا فيها الــ method المسمى toString ..
ماذا تقصد بــ "الصف الأب لكل صفوف الجافا" ؟
احترامي لك.
السلام عليكم ..
هذا صحيح ...و بالتالي يوجد حل آخر .. هو تحويل الــ char إلى string كمايلي :اقتباسلاحظ أنه لا يوجد overloading للدالة indexOf بحيث تستقبل character وهنا تكمن المشكلة
public class Nm_Position {
public static void main(String args[]){
StringBuffer mon_nom = new StringBuffer("Khaled_PRG");
int nb_position;
for(int i = 0;i <= mon_nom.length() - 1 ;i++)
{
nb_position = mon_nom.indexOf(String.valueOf (mon_nom.charAt(i)));
System.out.println("La position de "+mon_nom.charAt(i)+" égal à "+nb_position);
}
}
}الــ garbage collector يقوم بهذه المهمة .. حيث أن أماكن الذاكرة التي لا يشير إليها أحد يجب تحريرها .. و S1 اصبح يشير إلى قيمة جديدة (مكان جديد) و المكان القديم لا يشير إليه أحد ... و بالتالي يتم تحريره ... و لكن مشكلة الأداء تكمن أنه عند كل عملية تغير على النص , فإنه يتم حجز مكان جديد للنص الجديد كما قلنا ...اقتباسإذا كان الأمر هكذا, ألا يجب علينا تحرير المساحة التي كانت تشغلها S1 ؟
كل الصفوف في جافا ترث من الصف Object سواء بشكل مباشر أو غير مباشر : رابط:اقتباسماذا تقصد بــ "الصف الأب لكل صفوف الجافا" ؟
Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class.
تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 4 يناير 2012 في 02:40
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
اقتباسيوجد حل آخر .. هو تحويل الــ char إلى string
نعم, هذه الطريقة أفضل لأن تحويل حرف واحد إلى String أفضل من تحويل كل السلسلة من StringBuffer إلى String
اقتباسالــ garbage collector يقوم بهذه المهمة
سمعتُ عنه سابقا .. أذكر أنهم قالو أنه رجل طيب .. دائما ما ينظف الأوساخ :D
اقتباسأماكن الذاكرة التي لا يشير إليها أحد يجب تحريرها
و لماذا لا يشير إليها مؤشر ؟؟
عند تغيير محتوى String سيتم إنشاء كائن جديد يحتوي على عنوان جديد مُرفق بالقيمة الجديدة لسلسلة المحارف و بالتالي العنوان القديم ما زال موجودا و يُشير إلى الكائن الأول.
اقتباسكل الصفوف في جافا ترث من الصف Object سواء بشكل مباشر أو غير مباشر
لسوء الحظ, لا أعرف الإنجليزية, إذا كان لديك الرابط بالفرنسية فهذا جيد.
أو يمكنك ترجمة محتوى الرابط (محل الشاهد فقط, لو سمحت)
تحياتي.
السلام عليكم ...
نعم .. العنوان القديم (اسمه الدقيق object) مازال موجودا و لكن الكائن S1 (اسمه الدقيق Reference) .. اصبح يشير إلى مكان جديد كما قلنا , و المكان القديم لم يعد S1 يشير إليه , لذلك يتم تحريره بواسطة Garbage Collector .اقتباسعند تغيير محتوى String سيتم إنشاء كائن جديد يحتوي على عنوان جديد مُرفق بالقيمة الجديدة لسلسلة المحارف و بالتالي العنوان القديم ما زال موجودا و يُشير إلى الكائن الأول.
قمت باستخدام ترجمة جوجل :اقتباسلسوء الحظ, لا أعرف الإنجليزية, إذا كان لديك الرابط بالفرنسية فهذا جيد.
Objet de classe est la racine de la hiérarchie des classes. Chaque classe a des objets comme une superclasse. Tous les objets, y compris les tableaux, mettre en œuvre les méthodes de cette classe.
و هذا رابط الترجمة (مشكلته أنه قام بترجمة الكلمات المفتاحية ايضا مثل publique و الصحيح public) .
بالتوفيق أخي ..
تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 4 يناير 2012 في 03:43
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
مرحبا :)
اقتباسالعنوان القديم (اسمه الدقيق object) مازال موجودا و لكن الكائن S1 (اسمه الدقيق Reference) .. اصبح يشير إلى مكان جديد
بصراحة, لم أفهم الفرق بين الإثنين !! :blush:
حسب فهمي فإن :
هل هذا صحيح ؟؟
اقتباسمشكلته أنه قام بترجمة الكلمات المفتاحية ايضا مثل publique و الصحيح public
كنت أريد أن أرى ترجمة الفقرة الإنجليزية بالعربية نظرا لأن ترجمة جوجل غير دقيقة !
اقتباسمن الضروري على مبرمجي الجافا قراءة الــ Documentation الخاصة بلغة الجافا
أصبت, لهذا أتعلم الإنجليزية حاليا.
تحياتي.
السلام عليكم ...
بالضبط هذا صحيح ... و لو أنه في كثير من المراجع و الكتب .. تذكر كلمة object للدلالة على reference ..اقتباسحسب فهمي فإن :
- الكائن = الــ object
- المؤشر الذي يشير إلى الكائن = Reference
..إليك الترجمة ..اقتباسكنت أريد أن أرى ترجمة الفقرة الإنجليزية بالعربية نظرا لأن ترجمة جوجل غير دقيقة !
اقتباسالصف Object هو الجذر لهرمية الصفوف ,
الصف الأب لكل صف هو الصف Object ,
كل الكائنات بما فيها المصفوفات تحقق إجرائيات هذا الصف .
هذا جيد ... معظم المستندات و الأبحاث و المواقع الخاصة بعلوم الحاسب و البرمجة و تقنية المعلومات مكتوبة باللغة الإنكليزية ..بالتوفيق ..اقتباسأصبت, لهذا أتعلم الإنجليزية حاليا.
تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 4 يناير 2012 في 05:44
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
اقتباسالصف Object هو الجذر لهرمية الصفوف , الصف الأب لكل صف هو الصف Object , كل الكائنات بما فيها المصفوفات تحقق إجرائيات هذا الصف .
جميل جدا.
أشكرك أخي حسام على متابعة الموضوع و الرد السريع و إثراء النقاش و أرجو أن ألتقي بك قريبا في موضوع جديد.
دامت أناملك.
مشكور أخي خالد ...نقاش رائع ..على أمل اللقاء في مواضيع جديدة ..
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر