原始数据类型是否扩展了Object类? 如果不是,那么这段代码怎么可能
long l=4567;
Object o=l;
System.out.println(o);
为什么我们不会得到任何编译错误?
答案 0 :(得分:5)
它被称为自动装箱,并在Java 5中引入。
编译器将检测您是否使用了应该使用对象的基元并自动插入以下转换:
Object o = Long.valueOf(l);
它也可以反过来(自动拆箱):
Long one = 1;
System.out.println(one + 2);
// gets compiled to
System.out.println(one.longValue() + 2);
答案 1 :(得分:0)
原始long被自动装入一个Long类型的Object中。这非常有用,因为基元将根据需要自动转换为对象和从对象转换。有关详细信息,请参阅此处 - http://docs.oracle.com/javase/tutorial/java/data/numberclasses.html
http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html