诡异的Integer
2024-09-06 20:00:41
先看下面的这个代码,为什么同样的都是赋值,却得不到同样的结果,也没有超出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)出来的变量,所以它们不等。
最新文章
- sql2000分享 批量建表dev_编号
- TIJ读书笔记05-this关键字
- 聊一聊google的Knowledge Graph
- androidStudio 改包名
- 1022: [SHOI2008]小约翰的游戏John - BZOJ
- sublime text插件
- TCP/IP的网际层协议——ICMP
- Spring中实现定时调度
- CI框架主题切换的功能
- spring拦截器的简单实现Interceptor
- CSS中image和text显示高度不一致的问题
- jvm常见的面试题
- const修饰函数
- vue 绑定属性 绑定Class 绑定style
- [svc][op]磁盘(结构)容量计算
- 8. Django系列之上传文件与下载-djang为服务端,requests为客户端
- 【HNOI2013】消毒
- mybatis由浅入深day02_8spring和mybatis整合
- day 7 字符串
- Elasticsearch-2.4.3的下载(图文详解)
热门文章
- BIO&;NIO
- ES6 - 基础学习(4): 模板字符串和字符串新增方法
- web渗透之XSS基本介绍
- openlayers6结合geoserver实现地图矢量瓦片(附源码下载)
- Kakfa集群(2.11-0.10.1.0)版本滚动升级方案
- 基于JavaSwing开发银行信用卡管理系统
- java 虚拟机原理
- postgresql开篇
- [APIO2018] New Home 新家 [线段树,multiset]
- [更新ing]zzy的家里蹲网课日记