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 classMyClass{ public static void main(String[] args) {// create a StringBuilder object 'sb'StringBuildersb= new StringBuilder("Hello"); System.out.println(sb.toString());// outputs HelloSystem.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 classMyClass{ public static void main(String[] args) {//create a StringBuilder object 'sb'StringBuildersb=new StringBuilder("Hello"); System.out.println(sb.toString());//outputs Hellosb.append("Java Monk");//adds string to sbsb.append("!");//adds string to sbSystem.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 classMyClass{ public static void main(String[] args) {//create a StringBuilder object 'sb'StringBuildersb=new StringBuilder("Hello"); System.out.println(sb.toString());//outputs Hellosb.insert(2,"!!!");//inserts '!!!' at index 2System.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 classMyClass{ public static void main(String[] args) {//create a StringBuilder object 'sb'StringBuildersb=new StringBuilder("Hello"); System.out.println(sb.toString());//outputs Hellosb.replace(1,2, "Java Monk");//inserts 'Java Monk' at between Hello at specified indexSystem.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 classMyClass{ public static void main(String[] args) {//create a StringBuffer object 'sb'StringBuildersb=new StringBuilder("HelloWorld"); System.out.println(sb.toString());//outputs HelloWorldsb.delete(3 , 7);//deletes characters between indexes 3 to 7System.out.println(sb.toString());//outputs Helrld} }
6. StringBuilder substring( int beginIndex, int endIndex ) method
The substring( ) method returns the string from specified index.
public classMyClass{ public static void main(String[] args) {// create a StringBuilder object 'sb'StringBuildersb= new StringBuilder("Hello Java Monk"); System.out.println(sb.toString());// outputs Hello Java MonkSystem.out.println(sb.substring(2,10));// outputs llo Java} }
7. StringBuilder charAt( index i ) method
The charAt( ) returns the character at specified index.
public classMyClass{ public static void main(String[] args) {// create a StringBuilder object 'sb'StringBuildersb= new StringBuilder("Hello Java Monk"); System.out.println(sb.toString());// outputs Hello Java MonkSystem.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 classMyClass{ public static void main(String[] args) {// create a StringBuilder object 'sb'StringBuildersb= new StringBuilder("Hello Java Monk"); System.out.println(sb.toString());// outputs Hello Java MonkSystem.out.println(sb.indexOf("M"));// outputs 11System.out.println(sb.indexOf("s"));//outputs -1} }
9. StringBuilder reverse( ) method
The reverse( ) method reverse characters position of entered string.
publicMyclass{ public static void main(String[] args) {//create a StringBuilder object 'sb'StringBuildersb=new StringBuilder("Hello"); System.out.println(sb.toString());//outputs Hellosb.reverse();//reverse stringSystem.out.println(sb.toString());//outputs olleH} }
10. StringBuilder capacity( ) method
The capacity( ) method , is used to return the current capacity.
public classMyClass{ public static void main(String[] args) {// create a StringBuilder object 'sb'StringBuildersb= new StringBuilder(""); System.out.println(sb.toString());// outputs blank lineSystem.out.println(sb.capacity());// outputs default capacity i.e 16StringBuildersb1= 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 classMyClass{ public static void main(String[] args) { longstartTime= System.currentTimeMillis();//records current time in milli secStringstr= "Hello"; StringBuffersb= new StringBuffer(str); for (inti= 0;i< 100000;i++) {sb.append("World"); } longtimeDiff= System.currentTimeMillis() -startTime;//records time difference of running for loopSystem.out.println("Time Taken by StringBuffer:" +timeDiff+ "ms."); longstartTime1= System.currentTimeMillis();//records current timeStringBuildersb1=new StringBuilder(str); for (inti= 0;i< 100000;i++) {sb1.append("World"); } longtimeDiff1= System.currentTimeMillis() -startTime1;//records time difference of running for loopSystem.out.println("Time Taken by StringBuilder:" +timeDiff1+ "ms."); } }
Output:-
Time Taken by StringBuffer: 23 ms.
Time Taken by StringBuilder: 9 ms.

