java面试题网

普通会员

265

帖子

9

回复

179

积分

楼主
发表于 2018-03-21 18:11:45 | 查看: 874| 回复: 1

(1)String和StringBuffer、StringBuider:

    ①String:是不可变字符序列;

    ②StringBuffer、StringBuider:是可变字符序列;

    ③String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题。

(2)StringBuffer和StringBuider:

    ①StringBuffer:是JDK1.0版本的,线程安全,效率低;

    ②StringBuilder:是JDK1.5版本的,线程不安全,效率高;

    ③如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。



普通会员

216

帖子

75

回复

160

积分
沙发
发表于 2019-05-04 17:56:02
String 和StringBuilder、StringBuffer 的区别?

答: Java 平台提供了两种类型的字符串:String和StringBuffer / StringBuilder

相同点:

它们都可以储存和操作字符串,同时三者都使用final修饰,都属于终结类不能派生子类,操作的相关方法也类似例如获取字符串长度等;

不同点:

其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的,而StringBuffer和StringBuilder类表示的字符串对象可以直接进行修改,在修改的同时地址值不会发生改变。StringBuilder是JDK 1.5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized修饰,因此它的效率也比StringBuffer略高。在此重点说明一下,String、StringBuffer、StringBuilder三者类型不一样,无法使用equals()方法比较其字符串内容是否一样!

有一个面试题问:有没有哪种情况用+做字符串连接比调用StringBuffer / StringBuilder对象的append方法性能更好?如果连接后得到的字符串在静态存储区中是早已存在的,那么用+做字符串连接是优于StringBuffer / StringBuilder的append方法的。

您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018