String 面试题

如何理解 String 的不可变性?

    String s1 只能赋值.即重新造一个新的对象指向字符串常量池中的新字符串.

    因为如果你直接改原来的字符串的话,那其他指向这个字符串的 String s2 ... 怎么办?

 

String/StringBuffer/StringBuilder 的异同?

    三者底层都是存储结构都是 char[] 的数组.

    String:不可变的字符串,内存消耗最大,因为他拼字符串,会不断的新建回收,开销大.一旦赋值不能修改(final)

    StringBuffer/StringBuilder :内存消耗好一些,因为他是可变的字符序列,拼接字符串的时候,有可能还有空位.赋值后能修改

    StringBuffer:可变的字符串,线程安全

    StringBuilder:可变的字符串,线程不安全

 

对比String、StringBuffer、StringBuilder三者的执行效率
    从高到低排列:StringBuilder > StringBuffer > String

 

StringBuffer、StringBuilder中的常用方法
增:append(xxx)
删:delete(int start,int end)
改:setCharAt(int n ,char ch) / replace(int start, int end, String str)
查:charAt(int n )
插:insert(int offset, xxx)
长度:length();
*遍历:for() + charAt() / toString()

转载于:https://my.oschina.net/u/4049480/blog/3070286

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值