java Integer 赋值问题

安静的夜灬 2016-05-20 11:18:13
最近发现一个问题:
public static void main(String[] args) {
Integer a1=100,a2=100, a3=150,a4=150;
System.out.println(a1==a2);//true
System.out.println(a3==a4);//false
}

我对这段代码的理解是 int 100 a1= a2 int 150 a3=a4 按照这种理解 a3==a4应该是为true 实际上是false;
断点发现a1和a2内存地址指向是相同的 a3和a4内存地址不相同
于是代码理解成了 int 100 a1= a2 int 150 a3 int 150 a4
我这里想不通的是 为何 a3和a4地址不相同了,求教,不胜感激
...全文
522 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
当数字超过128时不在调用Integer数据池里的数据将重新new一个数据 所以地址不一样
安静的夜灬 2016-05-20
  • 打赏
  • 举报
回复
嗯嗯 虽然有些讲的不是完全能理解,但是看后收获很大,谢谢楼上的兄弟哈
usecf 2016-05-20
  • 打赏
  • 举报
回复
看下这个文章你就明白了 http://blog.sina.com.cn/s/blog_7f033dcf01017ljx.html

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧