Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I was having a discussion about usage of Strings and StringBuffers in Java. How many objects are created in each of these two examples?

Ex 1:

String s = "a";
s = s + "b";
s = s + "c";        

Ex 2:

StringBuilder sb = new StringBuilder("a");
sb.append("b");
sb.append("c");

In my opinion, Ex 1 will create 5 and Ex 2 will create 4 objects.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
616 views
Welcome To Ask or Share your Answers For Others

1 Answer

I've used a memory profiler to get the exact counts.

On my machine, the first example creates 8 objects:

String s = "a";
s = s + "b";
s = s + "c";
  • two objects of type String;
  • two objects of type StringBuilder;
  • four objects of type char[].

On the other hand, the second example:

StringBuffer sb = new StringBuffer("a");
sb.append("b");
sb.append("c");

creates 2 objects:

  • one object of type StringBuilder;
  • one object of type char[].

This is using JDK 1.6u30.

P.S. To the make the comparison fair, you probably ought to call sb.toString() at the end of the second example.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...