String Builder (Part 2)

 Pre-requisites:- Strings , For Loop DataTypes ,  StringBuffer 

String Builder

In Java , Strings are immutable i.e once declared cannot be changed. The StringBuilder class can create mutable strings. The only difference between String class and StringBuilder class is that StringBuilder creates mutable strings.


Important StringBuilder Methods:-

1. StringBuilder length( ) method

The length( ) method returns the length of the string.
 public class MyClass {  
      public static void main(String[] args) {  
   
           // create a StringBuilder object 'sb'  
           StringBuilder sb = new StringBuilder("Hello");  
           System.out.println(sb.toString()); // outputs Hello   
   
           System.out.println(sb.length()); // outputs 5  
   
      }  
 }  
The .toString( ) displays StringBuilder in the form of a string.


2. StringBuilder append( string ) method

The append( ) method concatenates the string entered as argument in it.
 public class MyClass {  
      public static void main(String[] args) {  
          
           //create a StringBuilder object 'sb'  
           StringBuilder sb=new StringBuilder("Hello");  
           System.out.println(sb.toString()); //outputs Hello 
            
           sb.append(" Java Monk"); //adds string to sb  
           sb.append("!"); //adds string to sb  
           System.out.println(sb.toString()); //outputs Hello Java Monk !  
      }  
 }  



3. StringBuilder insert( int beginIndex, string  ) method

The insert( ) method inserts specified string at user defined index.
 public class MyClass {  
      public static void main(String[] args) {  
             
           //create a StringBuilder object 'sb'  
           StringBuilder sb=new StringBuilder("Hello");  
           System.out.println(sb.toString()); //outputs Hello  
             
           sb.insert(2,"!!!"); //inserts '!!!' at index 2  
           System.out.println(sb.toString());  //outputs He!!!llo  
      }  
 }  


4. StringBuilder replace( int beginIndex, int endIndex, string ) method

The replace( ) method replaces the given string from the specified beginIndex and endIndex.
 public class MyClass {  
      public static void main(String[] args) {  
             
           //create a StringBuilder object 'sb'  
           StringBuilder sb=new StringBuilder("Hello");  
           System.out.println(sb.toString()); //outputs Hello  
             
           sb.replace(1, 2, "Java Monk"); //inserts 'Java Monk' at between Hello at specified index   
           System.out.println(sb.toString());  //outputs HJava Monkllo  
      }  
 }  


5. StringBuilder delete( int beginIndex, int endIndex ) method

The delete( ) method deletes the string character between specified beginning and ending indexes.
 public class MyClass {  
      public static void main(String[] args) {  
             
           //create a StringBuffer object 'sb'  
           StringBuilder sb=new StringBuilder("HelloWorld");  
           System.out.println(sb.toString()); //outputs HelloWorld  
             
           sb.delete(3 , 7); //deletes characters between indexes 3 to 7  
           System.out.println(sb.toString());  //outputs Helrld  
      }  
 }  


6. StringBuilder substring( int beginIndex, int endIndex ) method

The substring( ) method returns the string from specified index.
 public class MyClass {  
      public static void main(String[] args) {  
   
           // create a StringBuilder object 'sb'  
           StringBuilder sb = new StringBuilder("Hello Java Monk");  
           System.out.println(sb.toString()); // outputs Hello Java Monk  
   
           System.out.println(sb.substring(2, 10)); // outputs llo Java  
   
      }  
 }  


7. StringBuilder charAt( index i ) method

The charAt( ) returns the character at specified index.
 public class MyClass {  
      public static void main(String[] args) {  
   
           // create a StringBuilder object 'sb'  
           StringBuilder sb = new StringBuilder("Hello Java Monk");  
           System.out.println(sb.toString()); // outputs Hello Java Monk  
   
           System.out.println(sb.charAt(6)); // outputs J  
   
      }  
 }  


8. StringBuilder indexOf( string ) method

The indexOf( ) method returns the index of specified string character. If string not found , returns -1.
 public class MyClass {  
      public static void main(String[] args) {  
   
           // create a StringBuilder object 'sb'  
           StringBuilder sb = new StringBuilder("Hello Java Monk");  
           System.out.println(sb.toString()); // outputs Hello Java Monk  
   
           System.out.println(sb.indexOf("M")); // outputs 11  
             
           System.out.println(sb.indexOf("s")); //outputs -1  
      }  
 }  


9. StringBuilder reverse( ) method

The reverse( ) method reverse characters position of entered string.
 public Myclass {  
      public static void main(String[] args) {  
             
           //create a StringBuilder object 'sb'  
           StringBuilder sb=new StringBuilder("Hello");  
           System.out.println(sb.toString()); //outputs Hello  
             
           sb.reverse(); //reverse string  
           System.out.println(sb.toString());  //outputs olleH  
      }  
 }  



10. StringBuilder capacity( ) method

The capacity( ) method , is used to return the current capacity.
 public class MyClass {  
      public static void main(String[] args) {  
   
           // create a StringBuilder object 'sb'  
           StringBuilder sb = new StringBuilder("");  
           System.out.println(sb.toString()); // outputs blank line  
   
           System.out.println(sb.capacity()); // outputs default capacity i.e 16  
   
           StringBuilder sb1 = new StringBuilder("Hello there, It is Java Monk");  
           System.out.println(sb1.capacity()); // outputs capacity 44  
   
      }  
 }  


String Buffer vs String Builder

As you have seen it that StringBuffer and StringBuilder are similar classes with almost same methods & parameters. Although they both are similar classes but they too have dissimilarities among them.

String Buffer String Builder
StringBuffer is thread safe. It means two threads can't call the methods of StringBuffer simultaneously. StringBuilder is not thread safe. It means two threads can call the methods of StringBuilder simultaneously.
StringBuffer is less efficient than StringBuilder. StringBuilder is more efficient than StringBuffer.


Below is a code demonstrating the time taken to run .append( string ) of both StringBuilder and StringBuffer classes. 
 public class MyClass {  
      public static void main(String[] args) {  
   
           long startTime = System.currentTimeMillis();  //records current time in milli sec  
           String str = "Hello";  
   
           StringBuffer sb = new StringBuffer(str);  
           for (int i = 0; i < 100000; i++) {  
                sb.append(" World");  
           }  
   
           long timeDiff = System.currentTimeMillis() - startTime;  //records time difference of running for loop  
           System.out.println("Time Taken by StringBuffer: " + timeDiff + " ms.");  
             
           long startTime1 = System.currentTimeMillis();  //records current time  
             
           StringBuilder sb1=new StringBuilder(str);  
           for (int i = 0; i < 100000; i++) {  
                sb1.append(" World");  
           }  
             
           long timeDiff1 = System.currentTimeMillis() - startTime1;  //records time difference of running for loop  
           System.out.println("Time Taken by StringBuilder: " + timeDiff1 + " ms.");  
   
      }  
 }  
Output:-
 Time Taken by StringBuffer: 23 ms.  
 Time Taken by StringBuilder: 9 ms.  



< Previous Next >