Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
606 views
in Technique[技术] by (71.8m points)

java - How many objects are created

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

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

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...