本文主要是介绍int、Integer、new Integer判等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先说一下==和equals两者的区别
我们比较相等都是比较值是不是相等。对于基本类型(byte,short,char,int,long,float,double,boolean)的判等,统一用==,因为他们用不了equals,编译器都不同意。equals方法只针对于类(Integer,String,Long,Float)判等,因为new出来的两个对象,地址永远时不相等的,用==结果只能时false,只有用equals才能判断值是不是相等。
int vs int、Integer、new Integer
因为int不是封装类,所以int与他们==比较时,封装类需要“拆箱”,返回一个int类型的值。所以结果永远为true
public final class Integer extends Number implements Comparable<Integer> {private final int value;public int intValue() {return value;}
}
new Integer vs Integer、new Integer
因为new Integer新建了一个对象,所以用==判断时,它跟谁都不相等,只能用equals。
Integer vs Integer
当用equals判等,他们永远相等。当用==判断时,要分两种情况:一、如果值范围在[-128,127],结果为true。二、如果值范围不在[-128,127]内,不相等。
因为Integer类内部维护了一个IntegerCache静态内部类,这个类中有一个cache数组,用于存储-128到127,如果值在这个范围内就用这个数组中的,如果不在这个范围内就要new一个对象。
private static class IntegerCache {static final int low = -128;static final int high;static final Integer cache[];
}
这篇关于int、Integer、new Integer判等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!