转载

深入学习String

作为一名Java程序员,最常用的就是String了,虽然常用,但是了解只是皮毛,于是来补习一下

String的存储结构和一些重要方法

以主流的JDK 1.8为例,String的内部实际存储结构为 char 数组,源码如下

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    // 用于存储字符串的值 
    private final char value[];
    // 用于缓存字符串的hash code 
    private int hash; // Default to 0 
    ...
}

String有以下 4 个重要的构造方法

1.以String为参数的构造方法

public String(String original) {
        this.value = original.value;
        this.hash = original.hash;
}

2.以char []为参数的构造方法

public String(char value[]) {
        this.value = Arrays.copyOf(value, value.length);
}

3.以StringBuffer为参数的构造方法

public String(StringBuffer buffer) {
        synchronized(buffer) {
            this.value = Arrays.copyOf(buffer.getValue(), buffer.length());
        }
    }

4. 以StringBuilder为参数的构造方法

public String(StringBuilder builder) {
       this.value = Arrays.copyOf(builder.getValue(), builder.length());
}

其中,比较容易被忽略的是以 StringBuffer 和 StringBuilder 为参数的构造函数

原文  http://www.louisvv.com/archives/2447.html
正文到此结束
Loading...