首页 > 其他分享 >整型包装类的比较

整型包装类的比较

时间:2022-10-27 10:33:06浏览次数:42  
标签:compare 包装 value public int num 整型 Integer 比较

Integer的比较

之前我们讲过,形式参数传递的时候数值类型的值不会被改变:

public static void main(String[] args) {
   Integer num=20;
   demo2(num);
    System.out.println("main+"+num);
}

private static void demo2(int num) {
    num=100;
    System.out.println("demo2+"+num);
}

但是为什么呢?我们知道这里是隐藏valueof装箱的过程,把valueof写出来,再点开看一下:

public Integer(int value) {
    this.value = value;
}

那这个value是什么呢?

private final int value;//维护integer数据
System.out.println(num3.equals(num4));

那我们点开equals的底层看一下:

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
}

可以看到是先判断是否是整数包装类的对象,然后再进行返回,如果说对象是integer的一个对象,返回value

private final int value;//维护integer数据

点开可以看到value是由final修饰的一个常量,所以说对于字面量类型和所有的包装类型,值都是不可更改的

comparable

上次我们点开看到number类的都实现了comparable的接口,我们也可以用compare来比较数据

Integer.compare(num1,num2);
num1.compareTo(num2);

调用compare方法:

public static int compare(int x, int y) {
    return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

调用compareto方法:

public int compareTo(Integer anotherInteger) {
    return compare(this.value, anotherInteger.value);
}

可以看到最终都是调用compare方法,并且返回0,-1,1三个值

标签:compare,包装,value,public,int,num,整型,Integer,比较
From: https://www.cnblogs.com/Liku-java/p/16831281.html

相关文章