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