HashMap引用传递;
- 对象直接赋值。无论修改的是哪一个两个值都会变化。本质上赋值的只是引用地址。
Map<String, String> map = new HashMap<>(); Map<String, String> map2 = map;
- 方法传递时,本质上也是传递的引用地址,无论修改的是哪一个两个值都会变化。
static Map<String, String> map1 = new HashMap<>(); public static void test1(){ map1.put("a","b"); test2(map1); System.out.println(map1);//c } public static void test2(Map<String, String> map2){ System.out.println(map2);//b map2.put("a","c"); System.out.println(map1);//c System.out.println(map2);//c }
- new HashMap传递时,是新生成的等值对象,不再是引用地址
Map<String, String> map1 = new HashMap<>(); map1.put("a", "a"); Map<String, String> map2 = new HashMap<>(map1); System.out.println(map1);//a System.out.println(map2);//a map2.put("a", "b"); System.out.println(map1);//a System.out.println(map2);//b map1.put("a", "c"); System.out.println(map1);//c System.out.println(map2);//b