日期:2014-05-20  浏览次数:20686 次

关于自动装箱和自动转换的问题
Integer i=3;//这个没有问题,自动装箱

long l = 4;//这个自动转换,int-->long,也没啥问题

int i2=4;
Long l2=i2;//这个不能实现。****

求解一下,有点乱

i2不是int吗?不会自动转成long,然后再自动装成Long吗???还是我想法太天真了。
int-->long-->Long。这个实现不了吗?

比如我有一个方法
public void go(long l),这个方法调用的时候go(3)..正常编译执行
还有一个
public void go(Long l),这个方法调用go(3)。编译不通过

求解释下。3Q

------解决方案--------------------
不可能像你说的那样。

long l = 4;

这个过程是自动转型,也就是说基本类型到基本类型。


Integer i=3;

这个是自动装箱,自动装箱的机制是这样的。发现基本类型赋值给引用类型。

启动自动装箱功能,把3自动装箱成Integer.然后赋值





Long l2=i2;

这个,他会启动自动装箱机制。给自己装箱成Integer.但是Long并非Integer父类。所以出错。