|
20、String s1 = newString("ABC");和String s2 = "ABC";中,先写第一句和后写第一句的区别和联系? 对于上面的代码,有一点要说的:就是无论String s2 = new String("abc")在s1前面写还是后面写,s2都会检查StringPool中是否有"abc", 若有,就直接在堆内存中创建一个对象;若没有,则要先在StringPool中创建"abc"后,再在堆内存中创建一个对象。这和20题一样的。 但是对于这道题,s1在前,创建两个对象,s1在后,这创建一个对象,因为s2已经在常量池中创建了一个“abc”的字符串对象,则s1就不会在创建了,直接在堆内存中new一个对象。
|