用如下的构造函数可以创建一个被字符数组初始化的字符串(String):
String(char chars[ ])
下面是一个例子:
char chars[] = { 'a', 'b', 'c' };
String s = new String(chars);
------------
我刚学1个月 有高手能逐一解释吗?
String(char chars[ ])
下面是一个例子:
char chars[] = { 'a', 'b', 'c' };
String s = new String(chars);
------------
我刚学1个月 有高手能逐一解释吗?
value - 字符串的初始值
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
{
/** The value is used for character storage. */
private final char value[]; 看这个构造函数的实现,
public String(char value[]) {
int size = value.length;
this.offset = 0;
this.count = size;
//实际上,就是把这个传进来的字符数组,拷贝一份赋给this.value
this.value = Arrays.copyOf(value, size);
}Arrays.copyOf方法的实现: public static char[] copyOf(char[] original, int newLength) { char[] copy = new char[newLength];
//把original中的元素拷贝到copy中
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength)); return copy;
}
public String(char[] value,
int offset,
int count)分配一个新的 String,它包含来自该字符数组参数的一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被复制;后续对字符数组的修改不会影响新创建的字符串。 参数:
value - 作为字符源的数组。
offset - 初始偏移量。
count - 长度。
抛出:
IndexOutOfBoundsException - 如果 offset 和 count 参数索引字符超出 value 数组的范围。