程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> hashmap-Map的值為什麼發生了改變

hashmap-Map的值為什麼發生了改變

編輯:編程綜合問答
Map的值為什麼發生了改變

import java.util.HashMap;
import java.util.Map;

public class Test1 {
public static void main(String[] args) {

    Map map = new HashMap();
    Map ma = map;
    for (int i = 0; i < 3; i++) {
        Map<String, String> map2 = new HashMap<String, String>();
        map2.put("sss", "呵呵");
        ma.put(i, map2);
        ma = map2;
    }
    System.out.println(map);
    System.out.println(ma);
}

}

上面的代碼中 沒有直接操作map 但是結束後map 得到一個鏈表值
根據下面的回答想清楚了 最近頭有點暈暈的 ma 最開始確實是和map是同一個對象 但是在循環中不停的在改變,每次循環結束後都指向了map2 ,每次循環中map2都是一個新對象,第一次循環中在ma中put進去了一個map,但是在第二次循環的時候 ma就是最先被put進去的map2,所以map的值在不停的改變,得到最後的鏈表,謝謝下面的各位的回復

最佳回答:


Map 創建時,JVM會在Heap區去做New操作,實例名稱就是一個指針指向創建好的Map對象內存地址,一開始你讓一個名為map的“指針”(實際上Java裡面不講指針這個概念,這裡只是一種比喻)指向這個Map,後面你又定義了一個名為ma的“指針”指向同樣的Map對象,所以它們倆是一樣的內容,因此當你對ma進行put後,map內容也一樣會變,因為根本就是同一個對象

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved