String,StringBuilder,StringBuffer

一. String s = new String("A");会创建几个对象。

如果只有这一句话,创建两个对象,一个在堆,一个在字符串常量池,但是返回的是堆的对象。

如果字符串常量池已经存在“A”,那么new创建一个对象,在堆中。

PS:String s2 = "SS";这句话只会在字符串常量池中创建。即创建一个对象。

二.String是否可以被继承

不能,因为String类是这样声明的:public final class String extends Object。

主要看final关键字,final定义的类不可以被进程,final定义的方法不可被重写,final定义的变量不可以被修改。

三. StringBuilder和StringBuffer

StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比 StringBuffer高。

StringBuffer支持并发操作,线性安全的,适合多线程中使用。

StringBuffer中大量使用synchronized,效率较低。

四, 效率对比

StringBuilder>StringBuffer>String

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容