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

你可能感兴趣的:(String,StringBuilder,StringBuffer)