Java基础数据类型的Boxing转换

static boolean sameArgs(Integer a, Integer b){
    return a==b;
}
public static  void main(String[] args){
    System.out.println(sameArgs(3,3)); ///true
    System.out.println(sameArgs(3,new Integer(3))); ///false
    System.out.println(sameArgs(3,Integer.valueOf(3))); ///true
}

sameArgs函数判断a,b是否指向同一对象,如果是,那么返回true,否则,返回false。因为它自身接收的是Integer类型的参数,所以在把一个字符整数3(它默认是int类型),传递给sameArgs的时候,会发生boxing行为。
如果使用new Integer的方式调用构造函数从一个int构造一个Integer,因为采用了new,这就将导致生成一个新的对象实例,而如果是使用Integer.valueOf这样的方式,可能会“重用"现有的已创建但是还没销毁的对象。boxing默认是采用valueOf这样的方式进行的。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥