判断Integer值相等最好不用==最好使用equals

Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
System.out.println(c == d);
System.out.println(e == f);

输出 true false

Integer为对象判断是否相等还是使用equals最靠谱,

int为基本类型,判断是否相等就是可以使用==.

原因:

static final Integer cache[] = new Integer[-(-128) + 127 + 1];

static {
      for(int i = 0; i < cache.length; i++) {
             cache[i] = new Integer(i - 128);
      }
}

这是源码,也就是说cache中已有-128到127,不在这范围的会新new ,这时可以理解比较的是内存地址,也就是是不是同个一对象.

所以说当Integer的值不在-128到127的时候使用==方法判断是否相等就会出错,在这个范围之内的就会没有问题!!!

时间: 2024-10-10 12:32:12

判断Integer值相等最好不用==最好使用equals的相关文章

[Java]判断Integer值相等最好不用==最好使用equals

测试代码 Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; System.out.println(c == d); System.out.println(e == f); 结果输出: true false Integer为对象判断是否相等还是使用equals最靠谱,int为基本类型,判断是否相等就是可以使用== 其中的原因: static final Integer cache[] = new Integer[-(-1

判断Integer值相等最好不用==(未整理)

今天在开发中判断两个Integer值相等, Integer a = 3; Duixiang duixiang = new Duixiang(); duixiang = DAO.getDuixiang(); Integer b = duixiang.getB(); System.out.print(a == b);System.out.print(a.equals(b)); 发现a==b时,为false,a.equals(b)为true. 后来发现因为我b的值是从数据中拿出的一个对象的值.a和b的

判断Integer值相等不能用==

今天在开发中判断两个Integer值相等, Integer a = 3; Duixiang duixiang = new Duixiang(); duixiang = DAO.getDuixiang(); Integer b = duixiang.getB(); System.out.print(a == b);System.out.print(a.equals(b)); 发现a==b时,为false,a.equals(b)为true. 后来发现因为我b的值是从数据中拿出的一个对象的值.a和b的

Integer值判断是否相等问题

昨天在开发中遇到一个问题,定义了两个Integer变量,暂且定义为Integer a;  Integer b; 这两个值由前端赋值并传到后台,前台传的是a = 12345, b = 12345,  但我在后台比较的时候 if (a == b),却返回false,好无语啊,不都是123吗?为什么返回false,后来改为equals(),返回true,但其中的有些端倪还不太清楚,现总结下: 我们知道Integer是int的包装类,在jdk1.5以上,可以实现自动装箱拆箱,就是jdk里面会自动帮我们转

判断某个值是否在某个范围汇编优化

判断某个值是否在某个范围是否在某个区间范围的代码是经常用到的,处理图片是否超出某个边界范围的时候, 我像素点设置为零, 否只做点别的 在这个过程中, 我们可能要进行一次饱和处理, 于是乎写下面的代码: if (val > 0 && val < 256) { // do something } else { // do something } 于是乎我就写了下面这样一个函数来讨论我们的问题 bool isRangAt1(int val, int min, int max) { i

JavaScript 的in 操作符 (“如何判断某值是否数组中的元素”?)

在编写JavaScript时,遇到一个常见的问题"如何判断某值是否数组中的元素"?这让我想起了PHP中的in_array()函数和Python中in 操作符.但JavaScript似乎没有内置类似的函数,而其in 操作符的作用也有点不同.通过查询相关的资料,我发现JavaScript的in 操作符还是挺有用的. 一.问题让我想到in 操作符,正是因为这样一个问题:"如何判断某值是否数组中的元素"?在PHP中,您可能会这样来处理: $os = array("

Android 在xml中配置 float 和 integer 值

一.float的配置方法 andriod 默认不支持float型的设置,在values 下的新建floats.xml 文件,在内部添加如下代码: <resources> <item name="chart_view_line_width" format="float" type="dimen"> 3.3</item> <item name="chart_view_text_size"

判断的值是否为空

/** * @projectname 项目名称: minxinloan * @packageclass 包及类名: com.minxinloan.loanaudit.web.controller.LoanauditCtrl.java * @description 功能描述: 判断的值是否为空 * @param 参 数: @param val * @param 参 数: @return * @return 返回类型: boolean * @createdate 建立日期: 2014-8-1下午4:

switch 判断单个值是否匹配,elseif 判断范围

1 <?php 2 3 $week=date("D"); 4 $week=1; 5 6 //switch (变量)//变量只用整行和字符串 7 //如果变量没有匹配的值则执行default中的区域,需要可以加上,不需要可以不加. 8 //break 是退出 9 //可以同时匹配多个条件,用来执行同一段代码. 10 //switch 判断单个值是否匹配,elseif 判断范围; 11 switch($week){ 12 13 case 1: 14 case 11: 15 case