Integer与int

23 篇文章 0 订阅

Integer 类和 int 的区别

  1. Integer 是 int 的包装类,默认值为null,int 是八大基本数据类型之一(byte,char,short,int,long,float,double,boolean),默认值为0;
  2. Integer 表示的是对象,用一个引用指向这个对象,而int是基本数据类型,直接存储数值。

关于Integer的比较问题:

  1. Integer与new Integer()不相等,因为内存地址不一样,使用 == 比较都为false。
  2. 两个都是非new出来的Integer,使用 == 比较,如果数在-128到127之间,则是true,否则为false
  3. 两个都是new出来的,==比较都为false。若要比较值是否相等,需使用equals方法进行比较。
  4. int和Integer(无论是否new)比,都为true,因为会把Integer自动拆箱为int再去比。

相关证明代码:

package test;

public class Test {
	
	public static void main(String[] args) {
		//new创建的包装类对象,两次new得到的对象引用地址是不同的,不能使用==关键字做大小比较。
		//而使用<和>等运算符时,会将运算符两边的对象都转换为基本类型后再做比较。 
		Integer t1 = new Integer(10);
		Integer t2 = new Integer(10);
		Integer t3 = new Integer(20);
		System.out.println(t1==t2);//false
	    System.out.println(t1<t3);//true
	    
	    //使用Integer i = Integer.valueOf(400); 或者Integer i = 400;
	    //当整数类型在-128~127之间时,如果已经创建了一个相同的整数,使用valueOf或者=(int)创建第二次时,不会使用new关键字,而是用已有的对象。
	    //所以使用valueOf方法创建两次对象,若对应的数值相同,且数值在-128~127之间时,两个对象都指向同一个地址。
        //总之,包装类对象不可使用==符做比较运算,如果要进行比较运算时,最好使用java类库中的compareTo方法。
	    Integer i = Integer.valueOf(40);   
	    Integer j = Integer.valueOf(40);   
	    Integer i2 = Integer.valueOf(400);   
	    Integer j2 = Integer.valueOf(400); 
	    Integer k = Integer.valueOf(399); 
	    System.out.println(i==j);//true
	    System.out.println(i2==j2);//false
	    System.out.println(i2>k);//true
	    
	    Integer p1 = 40;
	    Integer p2 = 400;
	    Integer p3 = new Integer(40);
	    int num = 40;
	    System.out.println(i==p1);//true
	    System.out.println(i==p2);//fasle
	    System.out.println(i==p3);//false
	    System.out.println(num==p3);//true
	    
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值