linux java开发环境变量 numpy 微信直播 Kotlin EasyCVR DHCP ios razor datagridview uiviewcontroller vue实现原理 angular视频 jquery移除子元素 python查看数据类型 idea生成main方法 虚拟机重启命令 pythonlist python生成随机数 python新手教程 配置python环境 python开发界面 java字符串 java使用mysql java编程学习 java运行环境配置 java课程学习 java安装教程 java输出 java创建对象 linux如何安装 python网站开发实例 pascal教程 球中的小鬼 unity3d下载 苹果放大镜 js文件上传 xapk安装器 ps调整边缘抠头发丝 dnf95b套
当前位置: 首页 > 学习教程  > 编程语言

声明了Integer类型的两个数值并且值相等,但为什么返回了false?

2020/11/24 9:34:35 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

今天在写代码的时候发现了一个特别奇怪的问题 Integer id 131; // 传递过来的一个值 parentId 类型为Interger 也等于 131 System.out.printIn(id parentId) 值竟然等于 false?!!!抱着不相信自己代码Integer的类型写错的心态。 仔细打了…

今天在写代码的时候发现了一个特别奇怪的问题

Integer id = 131;
// 传递过来的一个值 parentId 类型为Interger 也等于 131
System.out.printIn(id == parentId)  
值竟然等于 false?!!!

抱着不相信自己代码Integer的类型写错的心态。
仔细打了几遍断点发现,确实进不去。
也查看了各种类型的声明dto发现也都是正确的。
那么这是为什么呢?

查阅相关文档才发现。

原来Integer有个装箱跟拆箱的操作。
当数值范围大于[-128,127],比如a= 12,b = 12的时候
这时候 a==b 的值就是true
可是当a = 131. b = 131 的时候,这时候的值则是false

因为超出范围,Integer会去重新new一个对象。比对的则不是值
比对的是引用地址。
所以才会出现等于false的情况。


```java
这种时候,建议从一开始使用equals()来进行比较。

本文链接: http://www.dtmao.cc/news_show_400063.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?