Autoboxing versus manual boxing in Java
问题 Why is the second piece of code faster? Map<Integer, Double> map = new HashMap<Integer, Double>(); for (int i = 0; i < 50000; i++) { for (double j = 0.0; j < 10000; j++) { map.put(i, j); } } Map<Integer, Double> map=new HashMap<Integer, Double>(); for (int i = 0; i < 50000; i++) { for (double j = 0.0; j < 10000; j++) { map.put(new Integer(i), new Double(j)); } } 回答1: Autoboxing uses Integer.valueOf , which internally caches Integer objects for small integers (by default -128 to 127, but the