String str =
有人说上面的语句只创建了一个对象,但我看了API: String str = "abc"; is equivalent to: char data[] = {'a', 'b', 'c'}; String str = new String(data); 这样子不是创建了两个对象吗?一个是char[],另一个是str吗? 迷惑,求解释。
有人说上面的语句只创建了一个对象,但我看了API: String str = "abc"; is equivalent to: char data[] = {'a', 'b', 'c'}; String str = new String(data); 这样子不是创建了两个对象吗?一个是char[],另一个是str吗? 迷惑,求解释。
对于String str = "abc"来说,如果你把char[]也看作对象的话,那的确是有2个对象:一个char[],一个String。
其实看看String的源码就知道里面有个属性:
/** The value is used for character storage. */
private final char value[];
但是对于char data[] = {'a', 'b', 'c'}; String str = new String(data);来说,总共产生应该是有3个对象(2char[] + 1String),因为public String(char value[])最后会调用 Arrays.copyOf,也就是说创建了另一个新的char[]并且把data中的数据拷贝进去了。