java中两个Integer类型的值相比较的问题
转载自: https://www.cnblogs.com/xh0102/p/5280032.html
两个Integer类型整数进行比较时,一定要先用intValue()方法将其转换为int数之后再进行比较,因为直接使用==比较两个Integer会出现问题。
总结: 当给Integer直接赋值时,如果在-128到127之间相等的话,它们会共用一块内存,所以此时用==比较不会出现问题。而超过这个范围,则对应的Integer对象有多少个就开辟多少个堆内存,所以此时再使用==进行比较的话就会出错
请看如下程序:
1 package intAndInteger; 2 3 public class test { 4 public static void main(String[] args) { 5 // 两个new出来的Integer类型的数据比较, 6 //相当于把new出来的地址作比较 7 8 Integer a0 = new Integer(1);// 普通的堆中对象 9 Integer b0 = new Integer(1); 10 System.out.println("new出来的 " + "a0==b0 :" + (a0 == b0)); 11 System.out.println(a0); 12 13 // 调用intValue方法得到其int值 14 System.out.println("调用intValue " + "a0.intValue() == b0.intValue()" + 15 (a0.intValue() == b0.intValue())); 16 17 // 把Integer类型的变量拆箱成int类型 18 int c = 1; 19 System.out.println("将Integer自动拆箱 " + "a0==c: " + (a0 == c)); 20 21 // 其实也是内存地址的比较 22 Integer a1 = 30; // 自动装箱,如果在-128到127之间,则值存在常量池中 23 Integer b1 = 30; 24 System.out.println("直接赋值的两个Integer的比较" + 25 "a2 == b2: "+ (a1 == b1)); 26 27 Integer a2 = 30; 28 Integer b2 = 40; 29 System.out.println("直接赋值的两个Integer的比较 " + 30 "a6==b6: " + (a2 == b2)); 31 32 Integer a3 = 128; 33 Integer b3 = 128; 34 System.out.println("直接赋值的两个Integer的比较 " + 35 "a5 == b5: " + (a3 == b3)); 36 37 Integer a4 = 412; 38 Integer b4 = 412; 39 System.out.println("直接赋值的两个Integer的比较 " + 40 "a4 == b4: " + (a4 == b4)); 41 // 从这里看出,当给Integer直接赋值时, 42 //如果在-128到127之间相等的话,它们会共用一块内存 43 // 而超过这个范围,则对应的Integer对象有多少个就开辟多少个 44 45 System.out.println("调用intValue " + "a4.intValue() == b4.intValue(): " 46 + (a4.intValue() == b4.intValue())); 47 } 48 }
运行结果为:
new出来的 a0==b0 :false 1 调用intValue a0.intValue() == b0.intValue()true 将Integer自动拆箱 a0==c: true 直接赋值的两个Integer的比较a2 == b2: true 直接赋值的两个Integer的比较 a6==b6: false 直接赋值的两个Integer的比较 a5 == b5: false 直接赋值的两个Integer的比较 a4 == b4: false 调用intValue a4.intValue() == b4.intValue(): true
综上:在用两个Integer对象比较数值的话,如果是整型值的话最好调用intValue方法来得到一个int类型的值,当然也可将其转变为
float(floatValue),double(longValue)类型来比较。
在JDK API 1.6.0中文版中是这样介绍intValue的,
intValue
public int intValue()
-
以
int
类型返回该Integer
的值。
转载于:https://www.cnblogs.com/FengZeng666/p/10443243.html
java中两个Integer类型的值相比较的问题相关推荐
- java double相加_解决java中两个double类型的值相加
代码: /** * 提供精确的加法运算 * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(doub ...
- Java中两数交换引发的值传递问题及解决方案
Java中两数交换引发的值传递问题及解决方案 今天导师分享了一个有趣的代码,记录一下,让我们一起看看~ //交换两个整数 private static void swap(int i, int j) ...
- java中两种异常类型_Java中的三种异常类型
java中两种异常类型 Errors are the bane of users and programmers alike. Developers obviously don't want thei ...
- JAVA中两个char类型相加_【技术干货】Java 面试宝典:Java 基础部分(1)
海牛学院的 | 第 616 期 本文预计阅读 |18 分钟 Java 基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法, ...
- JAVA中两个char类型相加_1、JAVA中的几种基本类型,各占用多少字节?
1.Java是一种强类型语言.这就意味着必须为每一个变量声明一种类型.在Java中,-共有8种基本类型,其中有4种整型.2种浮点类型.1种用于表示Unicode编码的字符单元的字符类型char和1种用 ...
- JAVA中两个char类型相加_5.16--java数据类型转换及杂记
我们先来回顾一下前面学的java中的数据类型: java中数据类型分为基本数据类型和引用型数据类型 8种基本数据类型(值类型) 整型:byte(-128~127).short.int.long lon ...
- Java 中 int和Integer比较
下文笔者讲述java中int和Integer类型的比较,如下所示 int和Integer类型比较 1:Integer是int的包装类,int则是java的一种基本数据类型 2:Integer变量必须实 ...
- sql中两个时间类型相减得到的值
原文地址为: sql中两个时间类型相减得到的值 原文地址:http://my.oschina.net/zimingforever/blog/57504 sql中两个时间类型相减得到的值 今天有人把数据 ...
- php反序列化java.long_细数java中Long与Integer比较容易犯的错误总结
今天使用findbugs扫描项目后发现很多高危漏洞,其中非常常见的一个是比较两个Long或Integer时直接使用的==来比较. 其实这样是错误的. 因为Long与Ineger都是包装类型,是对象. ...
最新文章
- 如果你也想做实时数仓…
- 利用Reachability实现网络状态监听
- python根据地址查看变量名_tensorflow创建变量以及根据名称查找变量
- nssl1323,jzoj(初中)2107-交流【dfs,容斥,组合数】
- 序列化与反序列化的单例模式_序列化代理模式
- [渝粤教育] 西南科技大学 单片机原理与应用 在线考试复习资料(2)
- MATLAB分子微纳模拟,FDTD/MODE/DEVICE/Interconnect 微纳光电子模拟
- IIS 添加支持json格式文件
- 学术论文搜索相关的网址推荐
- 数学分析教程(科大)——1-(1~10)小节
- Unity竖排文字的实现(2019以上新版本可用)
- 开博尔android播放器,你看!你细看!开博尔Q50播放器本地和NAS文件管理方式详解...
- 《会计学》简单的思维导图(第一版)
- 优秀,起诉网站,可尼玛太秀了
- 2018计算机通信网络,2018年1-12月我国计算机、通信和其他电子设备制造业企业数量共计16656个...
- Anbox之构建android.img(三)
- microduino实现红外线发送与接收
- 传智播客西安中心之Android课程大纲
- Cocos2D教程:使用SpriteBuilder和Cocos2D 3.x开发横版动作游戏——Part 2
- php山东jiguan大学,Guan-Jisong
热门文章
- 使用APIHOOK实现进程隐藏
- 图像配准----Harris算子
- matlab simulink实例,simulink实例(有好多实例)..ppt
- cocos creator 安卓原生平台环境_竞技对抗小游戏单挑篮球开发历程 | Cocos技术派第12期...
- JAVA写XML乱码问题_java 写 xml 中文乱码
- 136. 只出现一次的数字(关于异或的使用)
- 【java】兴唐第二十四节课
- CSS之布局(盒子的垂直布局)
- 绝对定位下margin的作用
- Mac下PHP7.1+Nginx安装和配置