CodeGym /جاوا بلاگ /Random-UR /جاوا میں ضمیمہ () طریقہ: StringBuilder اور StringBuffer
John Squirrels
سطح
San Francisco

جاوا میں ضمیمہ () طریقہ: StringBuilder اور StringBuffer

گروپ میں شائع ہوا۔
append() StringBuilder اور StringBuffer کلاسز کا جاوا طریقہ ہے جو موجودہ ترتیب میں کچھ قدر کو شامل کرتا ہے۔ یہاں تک کہ اگر آپ نہیں جانتے تھے کہ ضمیمہ () طریقہ کیا ہے، تو آپ شاید پہلے ہی اسے واضح طور پر استعمال کر چکے ہیں۔ یہ اس وقت ہوا جب آپ نے + آپریٹر کا استعمال کرتے ہوئے جاوا میں Strings کو جوڑ دیا۔ نکتہ یہ ہے کہ جاوا میں String concatenation کو StringBuilder یا StringBuffer کلاس اور ان کے append() طریقہ کا استعمال کرتے ہوئے لاگو کیا جاتا ہے۔

String، StringBuffer اور StringBuilder کے بارے میں بہت مختصراً

جیسا کہ آپ شاید جانتے ہیں کہ String کلاس حتمی ہے (اس میں بچوں کی کوئی کلاس نہیں ہے) اور ناقابل تغیر (تخلیق کے بعد اس کلاس کی مثالوں میں ترمیم نہیں کی جاسکتی ہے)۔ درحقیقت، سٹرنگ کلاس کی غیر متغیر ہونے کی وجہ سے، ہر آپریشن کے نتیجے میں نئی ​​سٹرنگ مثالیں بنتی ہیں، اور پرانے کو ضائع کر دیا جاتا ہے، جس سے بہت زیادہ کچرا پیدا ہوتا ہے۔ سٹرنگ آبجیکٹ میں تبدیلیوں کی وجہ سے عارضی کوڑے کے پیدا ہونے سے نمٹنے کے لیے، آپ StringBuffer یا StringBuilder کلاسز استعمال کر سکتے ہیں۔ مؤخر الذکر دونوں کے درمیان بنیادی فرق یہ ہے کہ StringBuffer Synchronized ہے جبکہ StringBuilder نہیں ہے۔ لہذا، سٹرنگز کے لیے StringBuffer کا استعمال کریں جو کہ کثیر تھریڈڈ ماحول میں بار بار ترمیم کی جائے گی اور سنگل تھریڈڈ ماحول کی صورت میں StringBuilder۔جاوا میں ضمیمہ () طریقہ: StringBuilder اور StringBuffer - 1

StringBuilder اور StringBuffer میں Append()

append() StringBuilder اور StringBuffer کلاسز کے سرفہرست طریقوں میں سے ایک ہے۔ یہ موجودہ ترتیب میں ایک نئی قدر کو شامل کرتا ہے۔ StringBuffer اور StringBuilder دونوں کلاسوں میں 13 مختلف اوورلوڈ اپینڈ() طریقے ہیں ۔ آئیے StringBuilder کے لیے ضمیمہ کا طریقہ دیکھیں۔ بہرحال، وہ StringBuffer کے معاملے میں بالکل ویسا ہی کام کرتے ہیں۔
  • عوامی StringBuilder ضمیمہ (بولین بی)
  • عوامی StringBuilder ضمیمہ (char c)
  • عوامی StringBuilder ضمیمہ (char[] str)
  • عوامی StringBuilder ضمیمہ (char[] str، int آفسیٹ، int len)
  • عوامی StringBuilder ضمیمہ (CharSequence cs)
  • عوامی StringBuilder ضمیمہ (CharSequence cs، int start، int end)
  • عوامی StringBuilder ضمیمہ (ڈبل ڈی)
  • عوامی StringBuilder ضمیمہ (فلوٹ f)
  • عوامی StringBuilder ضمیمہ (int i)
  • عوامی StringBuilder ضمیمہ (طویل lng)
  • عوامی سٹرنگ بلڈر ضمیمہ (آبجیکٹ آبجیکٹ)
  • عوامی StringBuilder ضمیمہ (String str)
  • عوامی 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 پسند ہے۔
یہاں کیا ہوا ہے؟ سب سے پہلے، ہم نے "I love Java" کی قدر کے ساتھ s نام کا ایک StringBuilder بنایا۔ پھر اس میں append(int) کا استعمال کرتے ہوئے ایک عدد 14 شامل کیا گیا ۔ سختی سے بولیں تو، ہم نے ایک عدد عدد نہیں بلکہ سٹرنگ "14" کا اضافہ کیا اور "مجھے جاوا 14 سے پیار ہے" میں ایک تازہ کاری شدہ StringBuilder ویلیو حاصل کی۔ اس طرح، طریقہ دلیل کو StringBuilder آبجیکٹ میں بدل دیتا ہے، اسے موجودہ StringBuilder آبجیکٹ سے جوڑتا ہے، اور ایک تازہ کاری شدہ چیز واپس کرتا ہے۔

StringBuilder ضمیمہ () آبجیکٹ، انٹ، بولین اور سٹرنگ دلیل کے لیے مثال

ایک ہی کہانی نمبر، سٹرنگ، چار یا arrays عناصر کے ساتھ دیگر تمام اوور لوڈ شدہ طریقوں کے ساتھ ہوگی۔ آئیے عوامی StringBuilder ضمیمہ (Object obj) طریقہ کو ظاہر کرنے کے لیے ایک LegoBrick کلاس اور Color enum بنائیں۔
//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 کلاس بناتے ہیں جہاں ہم String، int، LegoBrick اور boolean کے ساتھ ایک بنیادی StringBuilder کو شامل کرتے ہوئے دکھائیں گے۔ عجیب لگتا ہے، لیکن یہ کام کرتا ہے!
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));
   }
}
آؤٹ پٹ ہے:
مجھے جاوا پسند ہے مجھے جاوا سے پیار ہے مجھے جاوا 14 پسند ہے مجھے Java14LegoBrick سے محبت ہے{color=RED, isConnected=false} مجھے Java14LegoBrick{color=RED, isConnected=false}سچ پسند ہے
سب سے پہلے، ہم نے StringBuilder "I love" بنایا اور ڈسپلے کیا، پھر سب سے پہلے، پھر append() طریقہ کا استعمال کرتے ہوئے ترتیب وار اس میں شامل کیا a String، ایک int نمبر، کسی آبجیکٹ کی سٹرنگ کی نمائندگی اور ایک بولین۔

StringBuilder ضمیمہ (char[] cstr، int سیٹ، int لمبائی)

آئیے تین پیرامیٹرز کے ساتھ append() طریقہ دیکھیں۔ یہ سٹرنگ میں دیئے گئے چار سرنی کے ذیلی رے کی نمائندگی کا اضافہ کرتا ہے۔ چنانچہ یہاں:
  • cstr حروف کی ایک صف ہے جسے شامل کرنا ہے۔
  • اسے شامل کرنے کے لیے پہلے کردار کا انڈیکس سیٹ کریں۔
  • لمبائی شامل کرنے کے لیے حروف کی مقدار ہے۔
اسی طرح دوسرے ضمیمہ () طریقوں کی طرح، یہ ایک توسیع شدہ StringBuilder آبجیکٹ واپس کرتا ہے۔ جاوا ایپ کوڈ کے حصے کے طور پر append(char[], cstr, int set, int length) کو استعمال کرنے کی ایک مثال یہ ہے ۔
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);
   }
}
آؤٹ پٹ ہے:
مجھے جاوا پسند ہے۔

CharSequence دلیل کے ساتھ StringBuilder append() طریقے

آپ نے دو طریقے دیکھے ہوں گے جن کے دلائل کے طور پر CharSequence ہے۔
  • عوامی StringBuilder ضمیمہ (CharSequence cs)
  • عوامی StringBuilder ضمیمہ (CharSequence cs، int start، int end)
تمام ابتدائی افراد نہیں جانتے کہ CharSequence ایک انٹرفیس ہے۔ دستاویزات کے مطابق CharSequence چار اقدار کا ایک پڑھنے کے قابل ترتیب ہے اور بہت سے مختلف قسم کے چار ترتیبوں تک یکساں، صرف پڑھنے کے لیے رسائی فراہم کرتا ہے۔ انٹرفیس کو جاوا کلاسز جیسے String، StringBuffer، StringBuilder اور مزید کے ذریعے لاگو کیا جاتا ہے۔ لہذا اگر آپ نہیں جانتے کہ اپنے پروگرام، String، StringBuffer یا StringBuilder میں کیا استعمال کرنا بہتر ہے تو آپ CharSequence استعمال کر سکتے ہیں۔ StringBuilder append(CharSequence cs، int start، int end) تقریباً append(char[] cstr، int set، int length) کے طور پر کام کرتا ہے جس پر ہم نے اوپر بات کی ہے۔ تاہم، یہ طریقہ بعد کے پہلے عنصر اور آخری کی وضاحت کرتا ہے۔ یہ یاد رکھنا ضروری ہے کہ آغاز بعد میں شامل ہے، لیکن اختتام نہیں ہے (یعنی، بعد میں آخری عنصر وہ عنصر ہے جو اختتام سے پہلے آتا ہے)۔ ایسا کیوں ہے؟ یہ جاوا میں بالکل ویسا ہی ہے۔ آئیے ظاہر کرتے ہیں کہ CharSequence کیا ہے اور append(CharSequence cs) اور append(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);
       }
   }
آؤٹ پٹ ہے:
یہ اسٹرنگ ہے یہ اسٹرنگ بلڈر ہے میرا اسٹرنگ بلڈر یہ اسٹرنگ بلڈر ہے میرا اسٹرنگ بلڈر یہ اسٹرنگ بلڈر ہے یہ اسٹرنگ میرا اسٹرنگ بلڈر ہے یہ اسٹرنگ بلڈر ہے یہ اسٹرنگ ہے
ہم نے دو CharSequences بنائے، String اور StringBuilder کو پابند کیا اور انہیں پرنٹ کیا۔ ہم append() طریقہ کو براہ راست myStringBuilder پر لاگو نہیں کر سکتے ہیں، کیونکہ CharSequence میں یہ طریقہ نہیں ہے (اگر آپ نہیں سمجھتے ہیں کہ کیوں، آپ کو وراثت کے ساتھ ساتھ حوالہ کی اقسام کو پھیلانے اور تنگ کرنے کے بارے میں بھی معلوم کرنا ہوگا)۔ لہذا، ہم ایک StringBuilder کے ساتھ تخلیق کرتے ہیں اور دونوں CharSequence کے ساتھ ترتیب وار ضمیمہ طریقہ استعمال کرتے ہوئے جوڑتے ہیں۔ آخر میں ہم نے اپنے StringBuilder کو "is" کے ساتھ جوڑ دیا ("i" myStringBuilder کا 5 واں عنصر ہے اور s 6 واں ہے۔ یاد رکھیں کہ طریقہ کار میں، اختتام کے طور پر بیان کردہ عنصر کو بعد سے خارج کر دیا گیا ہے۔

StringBuffer append() کے بارے میں کیا خیال ہے؟

StringBuffer.append میں بھی طریقہ کار کی 13 قسمیں ہیں اور وہ بالکل اسی طرح کام کرتے ہیں جیسے StringBuilder۔
  • عوامی سٹرنگ بفر ضمیمہ (بولین بی)
  • عوامی سٹرنگ بفر ضمیمہ (چار سی)
  • عوامی سٹرنگ بفر ضمیمہ (char[] str)
  • عوامی سٹرنگ بفر ضمیمہ (char[] str، int آفسیٹ، int len)
  • عوامی سٹرنگ بفر ضمیمہ (ڈبل ڈی)
  • عوامی سٹرنگ بفر ضمیمہ (فلوٹ ایف)
  • عوامی StringBuffer ضمیمہ (int i)
  • عوامی سٹرنگ بفر ضمیمہ (لمبی لمبی)
  • عوامی StringBuffer ضمیمہ (CharSequences)
  • عوامی StringBuffer ضمیمہ (CharSequence s، int start، int end)
  • عوامی سٹرنگ بفر ضمیمہ (آبجیکٹ آبجیکٹ)
  • عوامی سٹرنگ بفر ضمیمہ (سٹرنگ سٹر)
  • عوامی 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);
   }
}
آؤٹ پٹ ہے:
مجھے جاوا پسند ہے مجھے جاوا 14 سے محبت ہے۔
آپ اسے اس مضمون کی ہر مثال کے ساتھ کر سکتے ہیں۔ وہ کام کریں گے!

نتیجہ

چونکہ StringBuilder اور StringBuffer زیادہ تر افعال کا اشتراک کرتے ہیں، اس لیے یہ کوئی تعجب کی بات نہیں ہے کہ دونوں کلاسوں کے پاس append() طریقہ استعمال کرنے کے ایک جیسے طریقے ہیں۔ یہ ڈویلپرز کے لیے اچھی خبر ہے — آپ کو ہر کلاس کے لیے الگ الگ طریقے سیکھنے کی ضرورت نہیں ہے۔ یہ کہہ کر، استعمال کرنے کے مختلف طریقوں پر غور کرتے ہوئے append() ، اس بات کو یقینی بنائیں کہ اسٹرنگ میں ڈیٹا کی مختلف اقسام کی نمائندگی کو شامل کرتے ہوئے چند گھنٹوں کی مشق کریں۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION