Integer 内部实现


 1 public static void main(String[] args) {
2 Integer in1 = 128;
3 Integer in2 = 128;
4 System.out.println(in1 == in2 );
5 }
6 会发现该代码在复值不同的时候返回的结果是不相同。
7 以上的代码要分析原理的话那么需要进行源码的调试,那么就需要关联源码。
8 public static Integer valueOf(int i) {
9 if(i >= -128 && i <= IntegerCache.high)
10 return IntegerCache.cache[i + 128];
11 else
12 return new Integer(i);
13 }
14 如果指定值在-128~127之间那么直接返回的是该对象已经缓存好的Integer对象,那么同值的Integr是同一个对象,如果不在那么直接new出新的对象直接返回一定不等。

Integer 内部实现

时间: 2024-12-20 17:15:40

Integer 内部实现的相关文章

Integer判等的陷阱:你知道Integer内部高速缓冲区IntegerCache吗?

https://blog.csdn.net/magician_Code/article/details/51469101 我们先来看看下面代码的运行情况: public static void main(String[] args) { // TODO Auto-generated method stub Integer integer1; Integer integer2; integer1 = new Integer(10); integer2 = new Integer(10); //第一

Integer 类型比较大小

== 比较 Integer 大小 Integer n1 = 127; Integer n2 = 127; System.out.println(n1 == n2); // true System.out.println(n1.equals(n2)); // true Integer n1 = 128; Integer n2 = 128; System.out.println(n1 == n2); // false System.out.println(n1.equals(n2)); // tru

Integer

max() 1 public static int max(int a, int b) { 2 return Math.max(a, b); 3 } 4 5 6 /** 7 *Math 的max方法 8 */ 9 public static int max(int a, int b) { 10 return (a >= b) ? a : b; 11 } min()类似,sum() 1 public static int sum(int a, int b) { 2 return a + b; 3

黑马程序员_常用API总结

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- 一.Object类: 1.所有引用数据类型的超类(数组.类库中的类.我们自定义的类) 

【BLE】CC2541之自己定义长短按键

本篇博文最后改动时间:2017年01月06日,11:06. 一.简单介绍 本文以SimpleBLEPeripheral为例,介绍怎样将普通IO口(P12)自己定义为长短按键,实现按键3S以内松开为短按键.3S之后松开为长按键. 注:本文加入按键方法不与协议栈的按键相冲突,协议栈自带的按键仍可正常使用. 二.实验平台 协议栈版本号:BLE-CC254x-1.4.0 编译软件:IAR 8.20.2 硬件平台:smart RF开发板(主芯片CC2541) 三.版权声明 博主:甜甜的大香瓜 声明:喝水不

脚本语言:Xmas(二)

本篇,来谈谈类型系统,以及部分与垃圾收集器相关的内容. 一.基本类型 Xmas的基本类型:Null.Boolean.Label.String.Ref.Function.Integer.Float.Decimal.Array.List.Set.Map.Object:14个,相对于其他的脚本语言是有些多的:但,这些类型都是"原子的",少了其中一种,多少会有些不方便(但并非不完备,如Decimal可以代替所有算数类型:Map则可以可以替代所有容器类型).如果,你看过上一篇,会发现有那么一点点

JAVA并发API源码解析:原子类

在JAVA API的java.util.concurrent.atomic包下提供了一系列以基本类型包装类为基础的并发情况下不需要同步的类(借助硬件相关指令实现). 首先看一个例子AutomicInteger: public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L; p

由一个bug引出java包装类型

工作中遇到过一个bug,用两个POJO的 Integer 字段 做 == 判断,明明"数值"相等结果返回 false.检查代码,调试,看源码搞了好久,才知道是Java包装类理解不够惹的祸. 为了弄清楚其中的本质,先上一段代码: 1 int a = 5; 2 Integer b = 5; 3 Integer c = Integer.valueOf(5); 4 Integer d = Integer.valueOf(5); 5 Integer e = new Integer(5); 6 7

如何精确地测量java对象的大小

关于java对象的大小测量,网上有很多例子,大多数是申请一个对象后开始做GC,后对比前后的大小,不过这样,虽然说这样测量对象的大小是可行的,不过未必是完全准确的,因为过程中包含对象本身的开销,也许你运气好,正好能碰上,差不多,不过这种测试往往显得十分的笨重,因为要写一堆代码才能测试一点点东西,而且只能在本地测试玩玩,要真正测试实际的系统的对象大小这样可就不行了,本文说说java一些比较偏底层的知识,如何测量对象大小,java其实也是有提供方法的.注意:本文的内容仅仅针对于Hotspot VM,如