本帖最后由 Xee 于 2018-5-2 08:53 编辑
String初始化过程:
这里我认为主要分为两种:
1.调用构造 String str = new String();;
2.不调用构造 String str = "";
两种情况都有一个关键点在与:private final char value[]; 这个value的初始化过程。
情况一:String str1 = "abc";
情况二:String str2 = new String (str1);
通过这两种情况来看,首先会在方法区里面创建一个值为"abc"的字符串并分配地址值。根据API所提供的介绍看,这里会调用构造
这里的this.value数组别final所修,采用的是构造初始化。
而第二种情况相当与先调用了
然后再由 String original 也就是这里的str1去完成value的初始化,然后再把str2.value指向str1.value
这样的情况我觉得可以等效于String str3 = new String("abc");这里就找到了private final char value[]初始化的源头,也就是我猜想的String初始化的过程,燃鹅并没有什么卵用。 |
|