如何理解 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()