CodeGym /Java Blog /अनियमित /Append () जावा में विधि: StringBuilder और StringBuffer
John Squirrels
स्तर 41
San Francisco

Append () जावा में विधि: StringBuilder और StringBuffer

अनियमित ग्रुप में प्रकाशित
परिशिष्ट () StringBuilder और StringBuffer वर्गों की एक जावा विधि है जो वर्तमान अनुक्रम में कुछ मान जोड़ती है। यहां तक ​​​​कि अगर आपको नहीं पता था कि एपेंड () विधि क्या है, तो आप शायद पहले से ही इसका उपयोग कर चुके हैं। यह तब हुआ जब आपने जावा में स्ट्रिंग्स को + ऑपरेटर का उपयोग करके जोड़ा। मुद्दा यह है कि जावा में स्ट्रिंग संघटन StringBuilder या StringBuffer वर्ग और उनके परिशिष्ट () विधि का उपयोग करके कार्यान्वित किया जाता है।

बहुत संक्षेप में स्ट्रिंग, स्ट्रिंगबफर और स्ट्रिंगबिल्डर के बारे में

जैसा कि आप शायद जानते हैं कि स्ट्रिंग क्लास अंतिम है (इसमें कोई चाइल्ड क्लास नहीं है) और अपरिवर्तनीय (इस क्लास के उदाहरणों को निर्माण के बाद संशोधित नहीं किया जा सकता है)। वास्तव में, स्ट्रिंग वर्ग की अपरिवर्तनीयता के कारण, प्रत्येक ऑपरेशन के परिणामस्वरूप नए स्ट्रिंग उदाहरण बनाए जाते हैं, और पुराने को छोड़ दिया जाता है, जिससे बहुत अधिक कचरा उत्पन्न होता है। स्ट्रिंग ऑब्जेक्ट में संशोधन के कारण उत्पन्न होने वाले अस्थायी कचरे से निपटने के लिए, आप StringBuffer या StringBuilder कक्षाओं का उपयोग कर सकते हैं। बाद के दो के बीच मुख्य अंतर यह है कि StringBuffer सिंक्रोनाइज़ है जबकि StringBuilder नहीं है। इसलिए, स्ट्रिंग्स के लिए स्ट्रिंगबफ़र का उपयोग करें जो बहु-थ्रेडेड वातावरण में अक्सर संशोधित किए जाएंगे और सिंगल-थ्रेडेड वातावरण के मामले में स्ट्रिंगबिल्डर।एपेंड () जावा में विधि: स्ट्रिंगबिल्डर और स्ट्रिंगबफर - 1

Append() StringBuilder और StringBuffer में

संलग्न करें () StringBuilder और StringBuffer कक्षाओं के शीर्ष तरीकों में से एक है। यह वर्तमान क्रम में एक नया मान जोड़ता है। StringBuffer और StringBuilder दोनों वर्गों में 13 विभिन्न अतिभारित परिशिष्ट () विधियाँ हैं। आइए स्ट्रिंगबिल्डर के लिए एपेंड विधि देखें। वैसे भी, स्ट्रिंगबफर के मामले में वे बिल्कुल वही काम करते हैं।
  • सार्वजनिक स्ट्रिंगबिल्डर एपेंड (बूलियन बी)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न करें (चार सी)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न करें (चार [] str)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न करें (चार [] str, int ऑफ़सेट, int लेन)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न (CharSequence cs)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न करें (CharSequence cs, int start, int end)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न (डबल डी)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न करें (फ्लोट एफ)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न (int i)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न (लंबी एलएनजी)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न करें (ऑब्जेक्ट ओबीजे)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न (स्ट्रिंग स्ट्र)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न करें (स्ट्रिंगबफर एसबी)
आइए उनमें से कुछ पर चलते हैं और उदाहरणों के साथ समझाते हैं कि वास्तव में परिशिष्ट () विधि क्या करती है।

Java.lang.StringBuilder.append (int i)

java.lang.StringBuilder.append(int i) एक ऐसी विधि है जो मौजूदा स्ट्रिंगबिल्डर ऑब्जेक्ट में पूर्णांक जोड़ने की अनुमति देती है। आइए 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 बनाया। फिर इसमें संलग्न (int) का उपयोग करके एक पूर्णांक 14 जोड़ा गया । सख्ती से बोलते हुए, हमने एक पूर्णांक नहीं जोड़ा, लेकिन स्ट्रिंग "14" और "आई लव जावा 14" के लिए एक अद्यतन स्ट्रिंगबिल्डर मान प्राप्त किया। इस प्रकार, विधि तर्क को स्ट्रिंगबिल्डर ऑब्जेक्ट में बदल देती है, इसे मौजूदा स्ट्रिंगबिल्डर ऑब्जेक्ट से बांधती है, और एक अपडेटेड रिटर्न देती है।

ऑब्जेक्ट, इंट, बूलियन और स्ट्रिंग तर्क के लिए स्ट्रिंगबिल्डर एपेंड () उदाहरण

संख्या, स्ट्रिंग, चार या सरणी तत्वों के साथ अन्य सभी अतिभारित विधियों के साथ भी यही कहानी होगी। आइए सार्वजनिक स्ट्रिंगबिल्डर एपेंड (ऑब्जेक्ट ओबीजे) विधि को प्रदर्शित करने के लिए एक लेगोब्रिक क्लास और कलर एनम बनाएं।

//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 और बूलियन के साथ एक बेसिक 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));
   }
}
आउटपुट है:
मैं प्यार करता हूँ मैं जावा से प्यार करता हूँ मुझे Java14 से प्यार है मुझे Java14 से प्यार हैLegoBrick{color=RED, isConnected=false} मुझे Java14LegoBrick से प्यार है{color=RED, isConnected=false}true
सबसे पहले, हमने स्ट्रिंगबिल्डर "आई लव" बनाया और प्रदर्शित किया, फिर सबसे पहले, फिर एपेंड () पद्धति का उपयोग करके इसमें क्रमिक रूप से जोड़ा गया एक स्ट्रिंग, एक इंट नंबर, एक ऑब्जेक्ट का एक स्ट्रिंग प्रतिनिधित्व और एक बूलियन।

स्ट्रिंगबिल्डर एपेंड (चार [] सीएसटी, इंट सेट, इंट लेंथ)

आइए एपेंड () विधि को तीन मापदंडों के साथ देखें । यह स्ट्रिंग में किसी दिए गए चार सरणी के उप-सरणी का प्रतिनिधित्व जोड़ता है। तो ये रहा:
  • cstr संलग्न करने के लिए वर्णों की एक सरणी है
  • इसे जोड़ने के लिए पहले वर्ण की अनुक्रमणिका सेट करें
  • लंबाई संलग्न करने के लिए वर्णों की मात्रा है।
इसी तरह अन्य परिशिष्ट () विधियों के लिए, यह एक विस्तारित स्ट्रिंगबिल्डर ऑब्जेक्ट देता है। जावा ऐप कोड के हिस्से के रूप में एपेंड (चार [], सीएसटी, इंट सेट, इंट लम्बाई) का उपयोग करने का एक उदाहरण यहां दिया गया है ।

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 है।
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न (CharSequence cs)
  • सार्वजनिक स्ट्रिंगबिल्डर संलग्न करें (CharSequence cs, int start, int end)
सभी नौसिखिए यह नहीं जानते हैं कि CharSequence एक इंटरफ़ेस है। प्रलेखन के अनुसार CharSequence चार मानों का एक पठनीय अनुक्रम है और कई अलग-अलग प्रकार के चार अनुक्रमों के लिए समान, रीड-ओनली एक्सेस प्रदान करता है। इंटरफ़ेस को जावा क्लासेस द्वारा स्ट्रिंग, स्ट्रिंगबफ़र, स्ट्रिंगबिल्डर और अधिक के रूप में लागू किया जाता है। इसलिए यदि आप नहीं जानते कि आपके प्रोग्राम, स्ट्रिंग, स्ट्रिंगबफ़र या स्ट्रिंगबिल्डर में क्या उपयोग करना बेहतर है, तो आप CharSequence का उपयोग कर सकते हैं। स्ट्रिंगबिल्डर एपेंड (CharSequence cs, int start, int end) लगभग एपेंड (char [] cstr, int set, int लंबाई) के रूप में काम करता हैहमने ऊपर चर्चा की। हालाँकि, यह विधि बाद के पहले तत्व और अंतिम को निर्दिष्ट करती है। यह याद रखना महत्वपूर्ण है कि शुरुआत बाद में शामिल है, लेकिन अंत नहीं है (अर्थात, बाद में अंतिम तत्व वह तत्व है जो अंत से पहले आता है)। ऐसा क्यों? यह जावा में ऐसा ही है। आइए प्रदर्शित करें कि 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);
       }
   }
आउटपुट है:
यह स्ट्रिंग है यह स्ट्रिंगबिल्डर है मेरा स्ट्रिंगबिल्डर यह स्ट्रिंगबिल्डर है मेरा स्ट्रिंगबिल्डर यह स्ट्रिंगबिल्डर है यह स्ट्रिंगबिल्डर है यह स्ट्रिंगबिल्डर है यह स्ट्रिंग है
हमने उनके लिए दो CharSequences, बाउंड String और StringBuilder बनाए और उन्हें प्रिंट किया। हम संलग्न () पद्धति को सीधे myStringBuilder पर लागू नहीं कर सकते हैं, क्योंकि CharSequence में यह विधि नहीं है (यदि आपको समझ में नहीं आता है, तो आपको वंशानुक्रम के साथ-साथ संदर्भ प्रकारों के विस्तार और संकुचन के बारे में पता लगाने की आवश्यकता है)। इसलिए, हम दोनों CharSequence के साथ क्रमिक रूप से एपेंड विधि का उपयोग करके एक स्ट्रिंगबिल्डर बनाते हैं और जोड़ते हैं। अंत में हमने अपने StringBuilder को "is" ("i" myStringBuilder का 5वाँ तत्व है और s 6वाँ है। याद रखें कि विधि में, अंत के रूप में निर्दिष्ट तत्व को अनुवर्ती से बाहर रखा गया है।

स्ट्रिंगबफर एपेंड () के बारे में क्या?

StringBuffer.append में विधि के 13 संस्करण भी हैं और वे ठीक उसी तरह काम करते हैं जैसे StringBuilder।
  • सार्वजनिक स्ट्रिंगबफ़र एपेंड (बूलियन बी)
  • सार्वजनिक स्ट्रिंगबफ़र एपेंड (चार सी)
  • सार्वजनिक स्ट्रिंगबफ़र संलग्न (चार [] str)
  • सार्वजनिक स्ट्रिंगबफ़र एपेंड (चार [] str, int ऑफ़सेट, int लेन)
  • सार्वजनिक स्ट्रिंगबफर संलग्न (डबल डी)
  • सार्वजनिक स्ट्रिंगबफर एपेंड (फ्लोट एफ)
  • सार्वजनिक स्ट्रिंगबफ़र एपेंड (int i)
  • सार्वजनिक स्ट्रिंगबफर संलग्न (लंबी एलएनजी)
  • सार्वजनिक स्ट्रिंगबफ़र एपेंड (CharSequence s)
  • सार्वजनिक स्ट्रिंगबफ़र एपेंड (CharSequence s, int start, int end)
  • सार्वजनिक स्ट्रिंगबफ़र एपेंड (ऑब्जेक्ट ओब्ज)
  • सार्वजनिक स्ट्रिंगबफ़र एपेंड (स्ट्रिंग स्ट्र)
  • सार्वजनिक स्ट्रिंगबफर एपेंड (स्ट्रिंगबफर एसबी)
सबस्ट्रिंग में शामिल होने के लिए 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 से प्यार है
आप इसे इस आलेख के प्रत्येक उदाहरण के साथ कर सकते हैं। वो काम करेंगे!

निष्कर्ष

चूंकि स्ट्रिंगबिल्डर और स्ट्रिंगबफर अधिकांश कार्यों को साझा करते हैं, इसमें कोई आश्चर्य की बात नहीं है कि दोनों वर्गों के पास परिशिष्ट() विधि का उपयोग करने के समान तरीके हैं। डेवलपर्स के लिए यह अच्छी खबर है - आपको प्रत्येक वर्ग के लिए अलग-अलग तरीके सीखने की जरूरत नहीं है। ऐसा कहने के बाद, परिशिष्ट() का उपयोग करने के विभिन्न तरीकों पर विचार करते हुए , विभिन्न डेटा प्रकारों के प्रतिनिधित्व को स्ट्रिंग में जोड़ने के कुछ घंटों के अभ्यास को सुनिश्चित करना सुनिश्चित करें।
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION