今天看泛型的时候,了解了一下jdk1.5的新特性,自动装箱和自动拆箱,以下是我对原英文文档的理解性翻译。
任何一个java程序员都知道,你不能将一个int类型(或者其他基本类型)放入一个集合中,集合中只能装对象的引用,所以就要对基本类型int进行包装(int的包装类为Integer)。当你从一个集合中取出一个Integer对象的时候,你必须对Integer对象调用intValue()方法进行解包。这样频繁的解包和拆包让人很痛苦,也让代码显得很杂乱。而自动装箱拆箱让过程自动化,尽量减少了以上的困扰。
import java.util.*;
// Prints a frequency table of the words on the command line
public class Frequency {
public static void main(String[] args) {
Map<String, Integer> m = new TreeMap<String, Integer>();
for (String word : args) {
Integer freq = m.get(word);
m.put(word, (freq == null ? 1 : freq + 1));
}
System.out.println(m);
}
}
此代码的解释是按照自己的理解写上去的,没有翻译,在TreeMap中后面要存的是对象类型,现在自动装箱将int直接转为Integer存入map中,而将数据进行累加计算的时候又将Integer转为int进行拆箱计算。若没有这一步的话我们就要繁琐的写为Integer i=new Integer(freq)进行Integer转换而相加的时候还要掉要freq.intValue()来进行拆包相加。