現(xiàn)在有這樣一段代碼:import java.util.ArrayList;import java.util.List;public class RefTest {public String testString(String str){
str = "1111";
return str;
}
public void testList1(List<String> strs){
List<String> newStrs = new ArrayList<String>();
newStrs.add("11");
newStrs.add("22");
strs = newStrs;
}
public void testList2(List<String> strs){
strs.clear();
strs.add("11");
strs.add("22");
}接下來(lái),有一段代碼會(huì)調(diào)用其中的方法。import java.util.ArrayList;import java.util.List;public class Client {/**
* @param args
*/
public static void main(String[] args) {
String string = "Hello";
RefTest ref = new RefTest();
String string1 = ref.testString(string);
System.out.println("String :"+string);
System.out.println("String1 :"+string1);
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
ref.testList1(list);
System.out.println("list1 result:");
for (String str : list) {
System.out.println(str);
}
ref.testList2(list);
for (String str : list) {
System.out.println(str);
}
}}而這短代碼的運(yùn)行結(jié)果是:Hello1111ab1122對(duì)于第一個(gè)方法調(diào)用來(lái)說(shuō),我們可以認(rèn)為Hello是一個(gè)全局變量,把它傳到一個(gè)局部的方法里時(shí),是不會(huì)改變它的值,那么后面兩段代碼的結(jié)果就讓人費(fèi)解了。這個(gè)據(jù)說(shuō)個(gè)JVM里perm引用有關(guān),可是,我是個(gè)java初學(xué)者,實(shí)在是搞不懂。希望大家不吝賜教!
添加回答
舉報(bào)
0/150
提交
取消