String 类简单解析
为什么String不可变
public final class String
implements java.io.Serializable, Comparable, CharSequence {
/** The value is used for character storage. */
private final char value[];String不可变不只是因为他是final 这只能说明value数组的引用地址不可变,但是value的内容仍然可变,但是value数组是private的, 外部无法访问,所以他是不可变的。
String可以保证安全性,在函数传参数时,因为是引用,所以如果传String不会改变原始值,在hashMap中使用String作为key也可以保证安全 保证key不可变,若使用StringBuilder 则可能出现修改了key值是的出现两个相同的key
-
String StringBuffer StringBuilder
StringBuffer是线程安全的 String不可变所以每次增加都是创建一个新的对象,内存消耗比较大,StringBuilder在单线程 里面对于修改内容的字符串使用较好,多线程应该使用StringBuffer