常用类--Integer 类型对象之间大小比较

本文详细探讨了使用new Integer()、Integer.valueOf()以及直接赋值创建的Integer对象在比较时的差异。结论是:不能使用'=='比较大小,但可以使用'<', '>', '<=', '>='。对于valueOf方法,当数值在-128到127之间时,由于缓存机制,可能存在'=='返回true的情况。" 113161372,10544914,EF Core for MySql与DateTime.Now查询问题及解决方案,"['EF Core', 'MySql', '数据库查询', '时区', 'DateTime']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 使用 new Integer() 创建的对象 :

首先,我们知道,在java中,基本类型之间是可以做大小比较的,例如int i=1,int j=2,是可以直接使用关系运算符“<”、“>”、“==”等符号来做比较的。但在实际开发中,基本类型的包装类更为常用,那么包装类型的比较运算是如何呢?
在main方法中执行下面代码:

   Integer i = new Integer(100);  
    Integer j = new Integer(100);  
    System.out.println(i==j);

有人可能会说,jdk1.5以后,基本类型和包装类型之间是可以自由转换的,那么Integer对象也可以直接用关系运算符来做比较,但实际情况并非这样。执行上述代码,打印结果是:false。
其实原因很简单,上述代码中我们执行了两次new,所以创建了两个Integer型的对象,对象之间的“==”符是用来比较是否是一个对象的两个引用(即比较地址是否相同),上述代码中,两次new出来的对象地址显然是不可能相同的,故打印结果是false。
那么对于“<”、“>”这样的运算符呢?执行下面代码:

Integer i = new Integer(100);  
Integer j = new Integer(300);  
System.out.println(i<j);   

打印结果是true,经过实验,对于“<=”、“>=”符号也是一样的

结论1:使用new关键字创建的包装类型对象,不可以直接使用“==”来做大小比较,但可以使用“<”、“>”、“<=”、“>=”来做大小比较。

2. 使用Integer.valueOf() 创建的对象

当然,创建包装类型对象不一定非要使用new关键字,以Int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值