CodeGym /مدونة جافا /Random-AR /طريقة الإلحاق () في Java: StringBuilder وStringBuffer
John Squirrels
مستوى
San Francisco

طريقة الإلحاق () في Java: StringBuilder وStringBuffer

نشرت في المجموعة
append() ‎ هي طريقة Java لفئتي StringBuilder وStringBuffer والتي تُلحق بعض القيمة بالتسلسل الحالي. حتى لو لم تكن تعرف ما هي طريقة الإلحاق() ، فمن المحتمل أنك استخدمتها ضمنيًا بالفعل. حدث هذا عندما قمت بتسلسل السلاسل في Java باستخدام عامل التشغيل +. النقطة المهمة هي أن تسلسل السلسلة في Java يتم تنفيذه باستخدام فئة StringBuilder أو StringBuffer وطريقة الإلحاق () الخاصة بهم .

باختصار شديد حول String وStringBuffer وStringBuilder

كما تعلم، فإن فئة السلسلة نهائية (لا تحتوي على فئات فرعية) وغير قابلة للتغيير (لا يمكن تعديل مثيلات هذه الفئة بعد الإنشاء). في الواقع، نظرًا لعدم قابلية تغيير فئة السلسلة، يتم إنشاء مثيلات سلسلة جديدة نتيجة لكل عملية، ويتم التخلص من مثيلات السلسلة القديمة، مما يؤدي إلى توليد الكثير من البيانات المهملة. للتعامل مع توليد البيانات المهملة المؤقتة بسبب التعديلات على كائن السلسلة، يمكنك استخدام فئات StringBuffer أو StringBuilder. والفرق الرئيسي بين الأخيرين هو أن StringBuffer متزامن بينما StringBuilder ليس كذلك. ومن ثم، استخدم StringBuffer للسلاسل التي سيتم تعديلها بشكل متكرر في بيئة متعددة الخيوط وStringBuilder في حالة وجود بيئة ذات ترابط واحد.طريقة الإلحاق () في Java: StringBuilder وStringBuffer - 1

إلحاق () في StringBuilder وStringBuffer

يعد append() إحدى أفضل الطرق لفئتي StringBuilder وStringBuffer. يقوم بإلحاق قيمة جديدة بالتسلسل الحالي. هناك 13 طريقة إلحاق () محمّلة بشكل زائد في فئتي StringBuffer وStringBuilder. دعونا نلقي نظرة على طريقة الإلحاق لـ StringBuilder. على أي حال، فإنها تعمل بنفس الطريقة تمامًا في حالة StringBuffer.
  • إلحاق StringBuilder العام (منطقي ب)
  • إلحاق StringBuilder العام (char c)
  • إلحاق StringBuilder العام (char[] str)
  • إلحاق StringBuilder العام (char[] str، int offset، int len)
  • إلحاق StringBuilder العام (CharSequence cs)
  • إلحاق StringBuilder العام (CharSequence cs، int start، int end)
  • إلحاق StringBuilder العام (مزدوج د)
  • إلحاق StringBuilder العام (العائمة f)
  • إلحاق StringBuilder العام (int i)
  • إلحاق StringBuilder العام (LNG الطويل)
  • إلحاق StringBuilder العام (Object obj)
  • إلحاق StringBuilder العام (سلسلة سلسلة)
  • إلحاق StringBuilder العام (StringBuffer sb)
دعنا نتناول بعضها ونشرح بالأمثلة ما تفعله طريقة append() بالضبط .

Java.lang.StringBuilder.append(int i)

java.lang.StringBuilder.append(int i) هي طريقة تسمح بإلحاق عدد صحيح بكائن StringBuilder الموجود. دعونا نلقي نظرة على أمثلة استخدام Java.lang.StringBuilder.append(int i) :
StringBuilder s = new StringBuilder(I love Java);
int i = 14;
//the method appends StringBuilder and integer
s.append(i);
System.out.println(s);
الناتج هنا سيكون:
أنا أحب جافا 14
ماذا حدث هنا؟ أولاً، قمنا بإنشاء StringBuilder باسم s بالقيمة "I love Java". ثم يضاف إليه عدد صحيح 14 باستخدام append(int) . بالمعنى الدقيق للكلمة، لم نضيف عددًا صحيحًا، بل أضفنا السلسلة "14" وحصلنا على قيمة StringBuilder المحدثة إلى "أنا أحب Java 14". وبالتالي، تقوم الطريقة بتحويل الوسيطة إلى كائن StringBuilder، وربطها بكائن StringBuilder الموجود، وإرجاع كائن محدث.

مثال StringBuilder append() لوسيطة Object وint وboolean وString

ستكون القصة نفسها مع جميع الطرق الأخرى المثقلة بعناصر الأرقام أو السلسلة أو الأحرف أو المصفوفات. لنقم بإنشاء فئة LegoBrick وتعداد Color لتوضيح طريقة إلحاق StringBuilder العامة (Object obj) .
//enum with colors
 public enum Color {
   RED, YELLOW, BLUE;
}
//LegoBrick Class code
public class LegoBrick {
   Color color;
   boolean isConnected;

   public void connect() {
       System.out.println("This brick is connected");
       this.isConnected = true;
   }

   public void disconnect() {
       System.out.println("Disconnected");
       isConnected = false;
   }

   public LegoBrick(Color color, boolean isConnected) {
       this.color = color;
       this.isConnected = isConnected;
   }

   public Color getColor() {
       return color;
   }

   public boolean isConnected() {
       return isConnected;
   }

   @Override
   public String toString() {
       return "LegoBrick{" +
              "color=" + color +
              ", isConnected=" + isConnected +
              '}';
   }
}
لنقم الآن بإنشاء فئة AppendDemo حيث سنعرض إلحاق StringBuilder الأساسي باستخدام String وint وLegoBrick وboolean. رغم غرابتها فإنها فعالة!
public class AppendDemo {

   public static void main(String[] args) {
       StringBuilder s = new StringBuilder("I love");
System.out.println(s)
//the method appends StringBuilder and String
       s.append(" Java");
       System.out.println(s);
//the method appends StringBuilder and int
       s.append(14);
       System.out.println(s);
       LegoBrick legoBrick = new LegoBrick(Color.RED, false);
//the method appends StringBuilder and LegoBrick
       s.append(legoBrick);
       System.out.println(s);
//the method appends StringBuilder and boolean
       System.out.println(s.append(5<7));
   }
}
الإخراج هو:
أحب Java أحب Java14 أحب Java14LegoBrick{color=RED, isConnected=false} أحب Java14LegoBrick{color=RED, isConnected=false}true
أولاً، قمنا بإنشاء وعرض StringBuilder "أنا أحب"، ثم أولاً، أضفنا إليه بشكل تسلسلي باستخدام طريقة append() سلسلة ورقم int وتمثيل سلسلة لكائن وقيمة منطقية.

إلحاق StringBuilder (char [] cstr، int set، int length)

دعونا نلقي نظرة على طريقة الإلحاق () بثلاثة معلمات. يضيف تمثيلاً لمصفوفة فرعية لمصفوفة أحرف معينة إلى السلسلة. إذن هنا:
  • cstr عبارة عن مجموعة من الأحرف المراد إلحاقها
  • قم بتعيينه فهرس الحرف الأول المراد إلحاقه
  • الطول هو كمية الأحرف المراد إلحاقها.
على غرار أساليب الإلحاق () الأخرى ، تقوم هذه الطريقة بإرجاع كائن StringBuilder الموسع. فيما يلي مثال على استخدام append(char[], cstr, int set, int length) كجزء من كود تطبيق Java.
public class AppendDemo {
   // an example of using append(char[], cStr, int set, int length)

   public static void main(String[] args) {
       StringBuilder s = new StringBuilder("I love ");
      //here is a char's array, part of which we are going to append to s
       char[] cStr = new char[]
               {'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
       //we append 4 elements of cStr from the 4th element "J"
       s.append(cStr, 4, 4);
       System.out.println(s);
   }
}
الإخراج هو:
أنا أحب جافا

طرق إلحاق StringBuilder () باستخدام وسيطة CharSequence

ربما لاحظت طريقتين تستخدمان CharSequence كوسائط لهما.
  • إلحاق StringBuilder العام (CharSequence cs)
  • إلحاق StringBuilder العام (CharSequence cs، int start، int end)
لا يعلم جميع المبتدئين أن CharSequence عبارة عن واجهة. وفقًا للوثائق، يعد CharSequence تسلسلًا قابلاً للقراءة من قيم char ويوفر وصولاً موحدًا للقراءة فقط إلى العديد من الأنواع المختلفة لتسلسلات char. ويتم تنفيذ الواجهة بواسطة فئات Java مثل String وStringBuffer وStringBuilder والمزيد. لذلك إذا كنت لا تعرف ما هو الأفضل لاستخدامه في برنامجك، String أو StringBuffer أو StringBuilder، فيمكنك استخدام CharSequence. يعمل StringBuilder append(CharSequence cs, int start, int end) تقريبًا مثل append(char[] cstr, int set, int length) الذي ناقشناه أعلاه. ومع ذلك، تحدد هذه الطريقة العنصر الأول من اللاحقة والأخير. من المهم أن نتذكر أن البداية متضمنة في اللاحقة، ولكن النهاية ليست كذلك (أي أن العنصر الأخير في اللاحقة هو العنصر الذي يأتي قبل النهاية). لماذا هذا؟ إنها مجرد طريقة في جافا. دعونا نوضح ما هو CharSequence وأساليب إلحاق (CharSequence cs) وإلحاق (CharSequence cs، int start، int end) .
public class CharSequenceDemo {

   public static void printCharSequence(CharSequence ch) {
       System.out.println(ch);
   }
       public static void main(String[] args) {
           CharSequence myString = new String("This is String ");
           printCharSequence(myString);
           CharSequence myStringBuilder = new StringBuilder("This is StringBuilder ");
           printCharSequence(myStringBuilder);
           StringBuilder s = new StringBuilder("my StringBuilder ");
//StringBuilder.append
s.append(myStringBuilder);
           System.out.println(s);
//StringBuilder.append
           s.append(myString);
           System.out.println(s);
           s.append(myString, 5,7);
           System.out.println(s);
       }
   }
الإخراج هو:
هذه هي السلسلة هذه هي StringBuilder الخاصة بي StringBuilder هذه هي StringBuilder الخاصة بي StringBuilder هذه هي StringBuilder هذه هي السلسلة الخاصة بي StringBuilder هذه هي StringBuilder هذه هي السلسلة هي
لقد أنشأنا اثنين من CharSequences، وربطنا بهما String وStringBuilder وطبعناهما. لا يمكننا تطبيق طريقة append() مباشرة على myStringBuilder، نظرًا لأن CharSequence لا يحتوي على هذه الطريقة (إذا كنت لا تفهم السبب، فأنت بحاجة إلى معرفة المزيد عن الميراث بالإضافة إلى توسيع وتضييق أنواع المراجع). لذلك، نقوم بإنشاء StringBuilder باستخدام طريقة الإلحاق والتسلسل باستخدامها بشكل تسلسلي مع كل من CharSequence. في النهاية قمنا بإلحاق StringBuilder الخاص بنا بالتسلسل الفرعي "is" ("i" هو العنصر الخامس من myStringBuilder وs هو العنصر السادس. تذكر أنه في الطريقة، يتم استبعاد العنصر المحدد كنهاية من التسلسل الفرعي.

ماذا عن إلحاق StringBuffer ()؟

يحتوي StringBuffer.append أيضًا على 13 نوعًا مختلفًا من الطريقة ويعملون تمامًا بنفس طريقة StringBuilder.
  • إلحاق StringBuffer العام (منطقي ب)
  • إلحاق StringBuffer العام (شار ج)
  • إلحاق StringBuffer العام​(char[] str)
  • إلحاق StringBuffer العام​(char[] str، int offset، int len)
  • إلحاق StringBuffer العام (د مزدوج)
  • إلحاق StringBuffer العام (العائمة f)
  • إلحاق StringBuffer العام (int i)
  • إلحاق StringBuffer العام (LNG الطويل)
  • إلحاق StringBuffer العام (CharSequence s)
  • إلحاق StringBuffer العام (CharSequence s، int start، int end)
  • إلحاق StringBuffer العام (كائن obj)
  • إلحاق StringBuffer العام (سلسلة سلسلة)
  • إلحاق StringBuffer العام (StringBuffer sb)
لنأخذ مثالاً على StringBuffer.append للانضمام إلى سلسلة فرعية. نحن فقط نأخذ مثال StringBuilder ونغير جميع StringBuilders في التعليمات البرمجية إلى StringBuffers.
public class AppendDemo {
   // an example of using append(char[], cStr, int set, int length)

   public static void main(String[] args) {
       StringBuffer s = new StringBuffer("I love ");
      //here is a char's array, part of which we are going to append to s
       char[] cStr = new char[]
               {'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
       //we append 4 elements of cStr from the 4th element "J"
//with StringBuffer.append
       s.append(cStr, 4, 4);
       System.out.println(s);
//StringBuffer.append adds int 14 to s
s.append(14);
System.out.println(s);
   }
}
الإخراج هو:
أنا أحب جافا أحب Java14
يمكنك القيام بذلك مع كل مثال في هذه المقالة. سوف يعملون!

خاتمة

نظرًا لأن StringBuilder وStringBuffer يشتركان في معظم الوظائف، فليس من المستغرب أن يكون لدى كلا الفئتين طرق مماثلة لاستخدام طريقة append() . هذه أخبار جيدة للمطورين — ليس عليك تعلم أساليب منفصلة لكل فئة. بعد قولي هذا، مع الأخذ في الاعتبار تنوع طرق استخدام append() ، تأكد من التدرب لبضع ساعات على إضافة تمثيلات لأنواع البيانات المختلفة إلى سلسلة.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION