1. جافا - Java
2

ماهي ال stringbuilder وفرقها عن string

  • alm_m
  • 2013-12-11T02:50:40+00:00
  • رابط مختصر
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

  • الأفضل
  • الأحدث
  • الأقدم
18
eng.fouad 2013-12-11T04:35:03+00:00 أضف ردا
  • رابط مختصر
  • الاختلاف الرئيسي بين String و StringBuilder هو أن String يعتبر immutable، بينما StringBuilder هو mutable. وهذا يعني بأنه عند إنشاء كائن من String في الذاكرة، لا يمكن تعديل المحتوى النصي لهذا الكائن، بعكس الـ StringBuilder.

    • بالنسبة للـ concatenation operator مثل: "Hello " + "World" فهي لا تعني التعديل على كائن String معين، ولكن تتم ترجمتها أثناء الـ compile-time إلى:
String s = new StringBuilder("Hello ").append("world").toString();

والطريقة قد تختلف من implementation إلى آخر للـ JDK.

  • يتميز الـ String بأنه من الممكن إنشاء كائن منه عن طريق الـ String literal، مثل: "أهلاً بالعالم".

  • الـ APIs الخاصة بالـ String تحتلف عن الـ APIs الخاصة بالـ StringBuilder.

  • للتحويل من String إلى StringBuilder، استخدم الـ constructor. بينما العكس يتم عن طريق الدالة toString.

0
alm_m 2013-12-14T03:14:29+00:00 أضف ردا
  • رابط مختصر

شكرا لك استاذنا العزيز

0
wajdy essam 2014-01-02T13:50:43+00:00 أضف ردا
  • رابط مختصر

اضافه صغيرة لما ذُكر فإنه بالرغم من فوائد ال Immutability في النصوص String ، فعليك ان تعرف امرين أخرين متعلق به

الأول من ناحية الأداء Performance:

حيث لا يمكنك التعديل على الكائن وانما يتم انشاء كائن جديد بالقيمة القديمة مع الجديدة ، فلذلك الأمر يفضل أن تستخدم ال StringBuilder عندما تريد عمل Concatenation لأكثر من String مثلاً 10 الف مرة حيث أن أدائها أفضل

[code]

private String getReport(List data) {

String result = "";

for(Data d: data) {

result += getRow(d);

}

return result;

}

[/code]

مثل هذه الحالة فيفضل ان تستخدم StringBuilder وتبنى نصك وترجعه كString باستخدام toString .

النقطة الثانية وهي في ال Security:

فيفضل أن لا تخزن الأرقام الحساسه كString في برنامجك:

String password = anyInputReader.getString(); // joke object

لماذا ؟ السبب أن الكائن الـ Immutable لا يتغير وسوف تكون قيمته محفوظة الا أن يقوم ال GC بالتعامل مع هذه الذاكرة وتحرريها عندما ينتهي الكائن ، والأفضل أن تخزنها ك Array of Char وقم بتصفيرها متى ما انتهيت منها..

char[] password = Console.readPassword();

// do your checking

Arrays.fill(password, '');

جافا - Java

مجتمع مطوري لغة جافا

3.9 ألف متابع

أطلق موقعك الإلكتروني في دقائق

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

أنشئ موقعك الآن

اقرأ أيضًا

  • الفرق بين StringBuilder و StringBuffer
  • ما الفرق Instance and Static Variables, Constants & Methods ؟
  • كيفية اعمل حالة if اذا كان ال String يساوي احدى القيم
  • ما فائدة string[] args في الجافا ؟؟
  • الفرق بين الحلقات التكرارية

انسخ هذا الرابط:

تنبيه