在Java1.5以前,所有的基本类型都根本不同于所有的引用类型,但是自动装箱机制的出现之后,我们看似程序简单了很多步骤,但是麻烦也来了。

Set set = new TreeSet();
		List list = new ArrayList();
		for (int i = -3; i < 3; i++) {
			set.add(i);
			list.add(i);
		}
		for (int i = 0; i < 3; i++) {
			set.remove(i);
			list.remove(i);
		}
		System.out.println(set + "    " + list);

可以测试一下,得到的结果应该不是你想要的,然后试试

Set set = new TreeSet();
		List list = new ArrayList();
		for (int i = -3; i < 3; i++) {
			set.add(i);
			list.add(i);
		}
		for (int i = 0; i < 3; i++) {
			set.remove(i);
			list.remove(Integer.valueOf(i));
		}
		System.out.println(set + "    " + list);

是不是装箱机制遇到API的问题之后出现的问题,所以每次升级,细节很重要,很庆幸的是Java可以向下兼容,这样的话之前的程序OK,但是我们要是相信了装箱机制之后,会发现有些地方是暗藏杀机的。:)