其实你的问题是引用数据类型和原始数据类型的问题。所谓的包装类是属于引用数据类型的。就是类的数据类型的意思。 2.至于你问的什么情况下用Integer a=new Integer(2); 什么时候应该用int a=2;?给你个例子你就明白了。 int a =2; a.hashCode(); // 错误 //... Integer a = new Integer(a); a.hashCode(); // 正确 意思就是不能对原始类型调用方法,但可以对对象调用方法。知道什么时候用什么了吧!调用方法的时候用第二种。 3.对于你第三个问题Double a=5.0;为什么对?这是因为Java 为每个原始类型提供了封装类(Wrapper)。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 自动调用了Double(double d);