先看下面的这个代码,为什么同样的都是赋值,却得不到同样的结果,也没有超出int的范围啊?这是为什么?

package ppt_test;

public class StrangeIntegerBehavior
{
public static void main(String[] args)
{
Integer i1=127;
Integer j1=127;
System.out.println(i1==j1);
Integer i2=128;
Integer j2=128;
System.out.println(i2==j2);
}
}

  原来是因为java中的int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0, 而Integer的默认值为null。

Integer作为常量时,对于-128到127之间的数,会进行缓存,也就是说int a1 = 127时,在范围之内,这个时候就存放在缓存中,当再创建a2时,java发现缓存中存在127这个数了,就直接取出来赋值给a2,所以a1==a2的。当超过范围就是new Integer()来new一个对象了,所以a、b都是new Integer(128)出来的变量,所以它们不等。

最新文章

  1. sql2000分享 批量建表dev_编号
  2. TIJ读书笔记05-this关键字
  3. 聊一聊google的Knowledge Graph
  4. androidStudio 改包名
  5. 1022: [SHOI2008]小约翰的游戏John - BZOJ
  6. sublime text插件
  7. TCP/IP的网际层协议——ICMP
  8. Spring中实现定时调度
  9. CI框架主题切换的功能
  10. spring拦截器的简单实现Interceptor
  11. CSS中image和text显示高度不一致的问题
  12. jvm常见的面试题
  13. const修饰函数
  14. vue 绑定属性 绑定Class 绑定style
  15. [svc][op]磁盘(结构)容量计算
  16. 8. Django系列之上传文件与下载-djang为服务端,requests为客户端
  17. 【HNOI2013】消毒
  18. mybatis由浅入深day02_8spring和mybatis整合
  19. day 7 字符串
  20. Elasticsearch-2.4.3的下载(图文详解)

热门文章

  1. BIO&NIO
  2. ES6 - 基础学习(4): 模板字符串和字符串新增方法
  3. web渗透之XSS基本介绍
  4. openlayers6结合geoserver实现地图矢量瓦片(附源码下载)
  5. Kakfa集群(2.11-0.10.1.0)版本滚动升级方案
  6. 基于JavaSwing开发银行信用卡管理系统
  7. java 虚拟机原理
  8. postgresql开篇
  9. [APIO2018] New Home 新家 [线段树,multiset]
  10. [更新ing]zzy的家里蹲网课日记