int和Integer的比较

int和Integer的比较

  • 【1】基本介绍
  • 【2】Integer和Integer之间的比较
  • 【3】int和int之间的比较
  • 【4】int和Integer之间的比较
  • 【5】Java Integer.compareTo()比较大小
  • 【6】!!!!!!补上案例说明

【1】基本介绍

Java中的int和Integer在比较时是有区别的。
(1)int是Java中的一种基本数据类型,属于值类型,可以直接比较。
(2)而Integer则是Java中的一种包装类型,属于引用类型,不能直接比较。
当我们对两个Integer对象进行比较时,实际上是在比较它们所引用的对象在内存中的地址,而不是其所代表的数值。因此,如果直接使用==进行比较,通常不能得到正确的结果。

【2】Integer和Integer之间的比较

针对Integer对象,我们可以使用equals()方法进行比较。equals()方法会先比较对象的类型是否一致,如果不一致则返回false。如果类型一致,则比较对象所代表的数值是否相等,如果相等则返回true,否则返回false。

Integer a = 10;
Integer b = 10;
System.out.println(a == b);      // true
System.out.println(a.equals(b)); // true

Integer c = 128;
Integer d = 128;
System.out.println(c == d);      // false
System.out.println(c.equals(d)); // true

在上面的代码中,我们声明了两个Integer对象a和b,它们所引用的对象在内存中地址相同,因此使用==进行比较时返回true。使用equals()进行比较时同样返回true。另外,我们声明了两个Integer对象c和d,它们所引用的对象在内存中地址不同,因此使用==进行比较时返回false。但是因为它们所代表的数值相同,因此使用equals()进行比较时返回true。

需要注意的是,由于Java中对整型常量池的规定,对于-128~127之间的整数,无论我们创建多少个Integer对象,它们所引用的对象在内存中地址都是相同的,因此使用==进行比较时会返回true。但是对于超过这个范围的整数,每创建一个Integer对象,就会在内存中新分配一个对象,因此==进行比较时会返回false。所以在比较Integer对象时,最好使用equals()方法进行比较。

总结:如果Integer类型的两个数相等,如果范围在-128~127(默认),那么用返回true,其余的范会false。Integer类型比较大小,要么调用Integer.intValue()转为基本类型用比较,要么直接用equals比较。

【3】int和int之间的比较

两个基本类型int进行相等比较,直接用==即可

【4】int和Integer之间的比较

一个基本类型int和一个包装类型Integer比较,用==也可,比较时候,Integer类型做了拆箱操作。

【5】Java Integer.compareTo()比较大小

public class IntegerCompareToDemo {  
    public static void main(String args[]) {  
        Integer b = 5;
        Integer c = 15;
	System.out.println(b.compareTo(c)); //输出-1
	b = 15;
	System.out.println(b.compareTo(c)); //输出0
	b = 20;
	System.out.println(b.compareTo(c)); //输出1
    }  
}

【6】!!!!!!补上案例说明

你可能感兴趣的:(java,jvm,开发语言)