首页 > 编程语言 >java Integer值比较

java Integer值比较

时间:2023-01-14 21:37:23浏览次数:41  
标签:java System equals 345 println Integer 比较 out


所有相同类型的包装类对象之间的值比较,应该使用equals方法比较。

先看个简单实例:

public static void main(String[] args)throws Exception{

Integer a = -121;
Integer b = -121;
Integer c = 345;
Integer d = 345;
System.out.println(a.equals(b));
System.out.println(a == b);
System.out.println(c.equals(d));
System.out.println(c == d);
}

这段代码打印结果为:

true
true
true
false

c和d的值都是345,为什么用==和equals比较结果不一样呢?

我们看下对象信息,注意对象地址:

java Integer值比较_java

Integer值的比较有个坑:对于Integer var = ?,在-128至127范围内的赋值, Integer 对象是在IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象;所以,在上面,我们的c和d两个,虽然值是一样的,但是地址不一样。

这是一个大坑,很多人会在项目中使用==来比较Integer!强烈建议,必须使用equals来比较!


标签:java,System,equals,345,println,Integer,比较,out
From: https://blog.51cto.com/u_15936016/6007794

相关文章

  • 有了这份Java面试中的葵花宝典,让你面试起飞!!!
    HashMap面试题HashMap与HashTable的区别1.HashMap线程不安全HashTable线程是安全的采用synchronized2.HashMap允许存放key为nullHashTable不允许存放key为null3.......
  • 在Linxu云服务器中创建Java版MC服务器
    前言因为学校的课程里有华为云的Linux课程,课程发放有2佰代金券用于开启云服务器,现在课程基本结束了,代金券还剩一百五十多,之前已经试过和舍友开过MC服务器,那趁现在结课的时......
  • Java集合 - ConcurrentHashMap
    介绍ConcurrentHashMap技术是为了解决问题而生的,ConcurrentHashMap解决了多个线程同时操作一个HashMap时,可能出现的内部问题。当多个线程同时操作一个HashMap时,有可......
  • Java集合 - ConcurrentHashMap
    介绍ConcurrentHashMap技术是为了解决问题而生的,ConcurrentHashMap解决了多个线程同时操作一个HashMap时,可能出现的内部问题。当多个线程同时操作一个HashMap时,有可......
  • Java 方法 实例 比较两个长方形的面积
    学习后,优化的,方法的目的一是可以重复被调用:packagecom.fqs.demo;publicclassMethodDemo2{publicstaticvoidmain(String[]args){//定义方法比......
  • Java判断是否是Windows系统
    在我们开发中,经常会读取一些本地文件,放到服务器肯定就要读取服务器的路径。本地win,远端服务器为Linux,所以就会进行系统判断等操作。//linux目录StringconfFileDir="......
  • java-打包
    方法0.使用package打包pom代码<build><plugins><plugin><groupId>org.springframework.boot</groupId>......
  • Java学习——酒店管理系统1
    酒店管理系统一、代码1.原始代码项目需求程序一启动,在控制台输出以下菜单用户选择1,2,3之后再一次展示菜单,可以一直选择用户选择4则提示谢谢您的使用程序运行......
  • java:时间显示------(日期格式化:format)
    format方法:格式化模式format方法中的“格式化模式”是一个用双引号括起的字符序列,该字符序列中的字符由时间格式符和普通字符所构成。例如假设当前时间是2016/10......
  • java for循环改造多线程例子
    1packagecom.company;23importjava.util.ArrayList;4importjava.util.List;5importjava.util.concurrent.CountDownLatch;6importjava.util.concur......