直接上代码,我的疑惑是!
有个疑惑,后面的list = new ArrayList<String>();会不会改变list的引用,导 致map.put("1",list);中的list也指向后面的list内存地址
public class Test {
public static void main(String[] args) {
Map<String, List<String>> map = new HashMap<String, List<String>>();
/**
* 有个疑问,后面的list = new ArrayList<String>();会不会改变list的引用,导 致map.put("1",
* list);中的list也指向后面的list内存地址
*/
List<String> list = new ArrayList<String>();
list.add("广州");
list.add("深圳");
list.add("惠州");
list.add("中山");
list.add("佛山");
map.put("1", list);
// System.out.println(list);
// System.out.println(map.get("1"));
list = new ArrayList<String>();
list.add("赣州");
list.add("南昌");
list.add("九江");
list.add("景德镇");
map.put("2", list);
list = new ArrayList<String>();
list.add("杭州");
list.add("宁波");
list.add("温州");
list.add("绍兴");
map.put("3", list);
System.out.println(map.get("1"));
System.out.println(list);
System.out.println("---------------------------------------------");
/**
* 有个疑问,后面的strs = new ArrayList<String>();会不会改变strs的引用,导 致test.put("1",
* strs);中的strs也指向后面的strs内存地址
*/
Map<String, List<String>> test = new HashMap<String, List<String>>();
List<String> strs = new ArrayList<String>();
strs.add("a");
strs.add("b");
strs.add("c");
map.put("1", strs);
System.out.println(strs);
System.out.println(map.get("1"));
strs = new ArrayList<String>();
strs.add("e");
strs.add("f");
strs.add("g");
map.put("2", strs);
System.out.println(strs);
System.out.println(map.get("1"));
System.out.println("---------------------------------------------");
// 内存划分为栈内存(小)和堆内存(大)
// 值类型
int i = 10;// 保存在栈内存
int m = i;// 把值复制给m
i = 11;
System.out.println("m=" + m + "i=" + i);
// 引用类型;除了基本数据类型,数组,String,类
// 实际内容存在堆,栈里只存对应到堆的地址
int[] a = new int[] { 1, 2, 3, 4 };
int[] b = a;// 把对应到堆的地址给了b
a[2] = 100;
System.out.println("b[2]=" + b[2]);
}
}