答案是2个,大家肯定都知道。面试中经常出现的问题,今天认真分析一下。
1、 Sting s 定义了一个变量s,没有创建对象;
2、 = 赋值,将某个对象的引用(句柄)赋给s ,没有创建对象;
3、 “abc” 创建一个对象;
4、 new String() 创建一个对象。
首先,总结一下java创建对象的方式:new、clone、反射、反序列化
再看一下 Stirng的构造函数
public String(String original) {
int size = original.count;
char[] originalValue = original.value;
char[] v;
if (originalValue.length > size) {
// The array representing the String is bigger than the new
// String itself. Perhaps this constructor is being called
// in order to trim the baggage, so make a copy of the array.
int off = original.offset;
v = Arrays.copyOfRange(originalValue, off, off+size);
} else {
// The array representing the String is the same