`
美丽的小岛
  • 浏览: 297677 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

String与Stringbuilder的联系

    博客分类:
  • java
 
阅读更多

不说废话,两个代码:

关天String的类:

public class testStr {
	public static void main(String[] args) {
		String str =null ;
		str +="abc";
		str +="def";
		str +="ghi" ;
	}
}

 关于StringBuilder的类:

public class testStrBuilder {
	public static void main(String[] args) {
		StringBuilder strb = new StringBuilder();
		strb.append("abc") ;
		strb.append("def") ;
		strb.append("ghi") ;
	}
}

进行对上面两个类用javac编程,再用一下javap来看看编译的效果是怎样的?

下面是testStrBuilder的字节文件的反编译:


下面是testStr的反编译:

 显然,不管能不能看懂这些字母代表什么意思,但是看后面的注解,能明白,他们很相同,String其实也就是StringBuilder去实现的了,但是,由红线的部分可以看到,String效率很差的,每次基本都要创建一个StringBuilder对象。

  • 大小: 150.4 KB
  • 大小: 61.7 KB
2
0
分享到:
评论
4 楼 美丽的小岛 2012-10-22  
ygyz03 写道
真的是这样?我觉得是编译器优化导致的吧?

可能有优化的成分,不过,它的CLASS文件的确是这样。
3 楼 ygyz03 2012-10-09  
真的是这样?我觉得是编译器优化导致的吧?
2 楼 美丽的小岛 2012-10-04  
endual 写道
原来是这样的,
还有一个是StringBuffer好像,这个是线程安全还是StringBuilder是线程安全忘记掉了

StringBuffer这个线程安全的。
1 楼 endual 2012-10-04  
原来是这样的,
还有一个是StringBuffer好像,这个是线程安全还是StringBuilder是线程安全忘记掉了

相关推荐

Global site tag (gtag.js) - Google Analytics