java

位置:IT落伍者 >> java >> 浏览文章

Java中的AutoBoxing


发布日期:2019年12月06日
 
Java中的AutoBoxing

理解Java中Integer和int的Autoboxing有助于java新手理解java内存机制

在Java中的Integer和int是可以Autoboxing和boxing的这里要注意的是

在 int自动装箱成Integer的过程中如果数值是在~之间的值的话那么会在在内存中供重用用语句说明如下

//i and i is in the range of ~ while i and i not

Integer i = ;

Integer i = ;

Integer i = ;

Integer i = ;

//compare the i whit i

if(i == i) Systemoutprint(i == i);

else Systemoutprintln(i != i);

//compare the i whit i

if(i == i) Systemoutprint(i == i);

else Systemoutprintln(i != i);

输 出的结果便是 i == i i != i

当然看这段代码的时候要明白==的用法

另 外要注意的一点的是在不涉及Autoboxing的时候Integer数值没有以上所述的特性如还是以上的代码只是在创建Integer对象的时候不同

Integer i = new Integer();

Integer i = new Integer();

Integer i = new Integer();

Integer i = new Integer();

此时输出的结果是 i != i i != i

这 里再指明的一点是关于equals方法的这个方法用在这里就可以避免Integer类的这种特殊处理将以上代码中的if语句的改一下

if(i == i) 可以改成 if( iequals(i) ) 就可以了

补 充的是equals()的原型是

public boolean equals(Object obj)

{

return (this == obj);

}

那 这个if(i == i) 和 if( iequals(i) )不是异曲同工了吗?

不是的Integer中已经对这个方法作了重载

public boolean equals(Object obj) {

if (obj instanceof Integer) {

return value == ((Integer)obj)intValue();

}

return false;

}

上一篇:将 Java 应用程序迁移到 .NET(2)

下一篇:Rails 开发与 Java 编程的比较