string、stringbuilder、stringbuffer原理及对比

3StringBuilderStringBuffer区别?

答:底层实现都是char数组,StringBuilder不是线程安全的,StringBuffer是线程安全的(Synchronized)。

     速度:StringBuilder>StringBuffer>String(创建新对象,缓存了hash)

()String s=new String(xyz),创建了几个String Object

答:两个或一个。”xyz”对应一个对象,存放在字符串常量池,”xyz”不管出现多少次,都是常量池的那一个,New String每写一次,在堆中就创建一个新的对象。如果常量池中存在”xyz”,常量池中不创建,不存在,在常量池中创建。

()String.intern()?   -->可以在运行时将新的字符串加入常量池

答:如果字符串常量池中存在等于此String对象的字符串,直接返回其引用,否则,在字符串常量池中创建此String对象,并返回其引用。

()字符串为什么设计为不可变的?如何做到不可变?

答:java字符串使用非常频繁,将字符串设置为不可变的,可以允许多个客户端共享相同的字符串。底层实现的字符数组是私有的,外界无法访问。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值