Latest Tutorials| Questions and Answers|Ask Questions?|Site Map



Home Javatutorials Appending Strings - Java Tutorials

Related Tutorials


 
 

Share on Google+Share on Google+

Appending Strings - Java Tutorials

Advertisement
Appending Strings - Java Tutorials

Appending Strings

In java, the two main ways for appending string at the end are :

  • First method is using += operator.
  • Second method is using append()  method.

In this section, we will compare the performance of these two ways by taking example. We will take three tasks to compare performance. For this we also crate a separate timer class to measure the time taken.

First we will create a timer class to record the time taken. Given below the timer Class:

/**
* Class used to measure the time that a task takes to execute.
* The method "time" prints out how long it took and returns
* the time.
*/
public class Timer {
/**
* This method runs the Runnable and measures how long it takes
* @param r is the Runnable for the task that we want to measure
* @return the time it took to execute this task
*/
public static long time(Runnable r) {
long time = -System.currentTimeMillis();
r.run();
time += System.currentTimeMillis();
System.out.println("Took " + time + "ms");
return time;
}
}

Performance Comparison

In first task, we will append string using += . And in second task,  we will create a StringBuffer  and calls the append function which is the function of StringBuffer. In third task, we will create a StringBuffer of accurate size and after that we append. Given below the example:

public class StringAppendDiff {
public static void main(String[] args) {
System.out.println("String += 10000 additions");
Timer.time(new Runnable() {
public void run() {
String s = "";
for(int i = 0; i < 10000; i++) {
s += i;
}
// we have to use "s" in some way, otherwise a clever
// compiler would optimise it away. Not that I have
// any such compiler, but just in case ;-)
System.out.println("Length = " + s.length());
}
});

System.out.println(
"StringBuffer 300 * 10000 additions initial size wrong");
Timer.time(new Runnable() {
public void run() {
StringBuffer sb = new StringBuffer();
for(int i = 0; i < (300 * 10000); i++) {
sb.append(i);
}
String s = sb.toString();
System.out.println("Length = " + s.length());
}
});

System.out.println(
"StringBuffer 300 * 10000 additions initial size right");
Timer.time(new Runnable() {
public void run() {
StringBuffer sb = new StringBuffer(19888890);
for(int i = 0; i < (300 * 10000); i++) {
sb.append(i);
}
String s = sb.toString();
System.out.println("Length = " + s.length());
}
});
}
}

Output

String += 10000 additions
Length = 38890
Took 2203ms
StringBuffer 300 * 10000 additions initial size wrong
Length = 19888890
Took 2254ms
StringBuffer 300 * 10000 additions initial size right
Length = 19888890
Took 1562ms

Conclusion

From this we can conclude that StringBuffer has about 300 times faster in speed than using +=.  Also third task concludes that if we set the correct initial size of the StringBuffer, it only takes 1562ms instead of 2254ms. This is because when the StringBuffer  size increase implicitly, it gets doubled in size, which left extra unusable size. To overcome this wastage, you can define correct initial size of the String Buffer.

Advertisement

If you enjoyed this post then why not add us on Google+? Add us to your Circles



Liked it!  Share this Tutorial


Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Posted on: April 18, 2011

Related Tutorials

Discuss: Appending Strings - Java Tutorials  

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments:5
Lino
August 23, 2011
Size?

What happens if you over-size or under-size the StringBuffer?
tiff
November 3, 2011
append

whats the use of append
Jyoti
February 18, 2012
append()

nice description through the example
simeon
July 12, 2012
Appending strings

how do you append strings?
Jayanth
April 16, 2013
Complement

Thank you
DMCA.com