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

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

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,经过实验,对于“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值