/-----------关键字:integer缓存

M1:关于integer缓存

M2:代码如下

 1 public class TestInteger {
 2     public static void main(String[] args){
 3         Integer i1 = 127;
 4         Integer i2 = 127;
 5         System.out.println(i1==i2);
 6
 7         Integer i3 = 128;
 8         Integer i4 = 128;
 9         System.out.println(i3==i4);
10
11         Integer i5 = -128;
12         Integer i6 = -128;
13         System.out.println(i5==i6);
14
15         Integer i7 = -129;
16         Integer i8 = -129;
17         System.out.println(i7==i8);
18     }
19 }

M3:结果

M4:分析

为了减少频繁创建对象造成系统压力,类在加载的时候就将-128~127的integer对象创建好放内存里,当我们要用的时候就会在这片内存里面找,找到了就引用它的地址,没找到就再重新弄块地创建。那么这里的i1和i2内存里本来就有直接引用自然就相同。i3和i4都会去指定内存里找,没有都会重新找块地创建,引用的地址自然就不相同。

M5:补充 

    • Boolean:(全部缓存)
    • Byte:(全部缓存)
    • Character(<= 127缓存)
    • Short(-128 — 127缓存)
    • Long(-128 — 127缓存)
    • Integer(-128 — 127缓存)
    • Float(没有缓存)
    • Doulbe(没有缓存)

M6:备注

欢迎大家一起学习,讨论!如有疑问请给我留言!

时间: 2024-10-20 21:00:13

/-----------关键字:integer缓存的相关文章

Java常量池详解之Integer缓存

一个Java question,求输出结果   public class IntegerTest { public static void main(String[] args) { objPoolTest(); } public static void objPoolTest() { Integer i1 = 40; Integer i2 = 40; Integer i3 = 0; Integer i4 = new Integer(40); Integer i5 = new Integer(4

Integer缓存机制

Integer缓存机制 总结: 1.jdk1.5对Integer新增了缓存机制,范围在-128-127(这个范围的整数值使用频率最高)内的自动装箱返回的是缓存对象,不会new新的对象,所以只要在缓存范围内值相等自动装箱返回的对象一样.jdk1.6后缓存范围的最大值127可以通过设置jvm的启动参数(-XX:AutoBoxCacheMax=size)调整2.Integer的缓存只在自动装箱时有效,使用构造器(new)创建的对象不会触发缓存3.int和Integer比较时不用考虑缓存问题,因为Int

Integer缓存源码剖析

首先先看一个例题,思考一下下面这段程序会出现什么样的结果,由这道题我们对部分源码进行分析: Integer a = 100; Integer b = 100; Integer c = 130; Integer d = 130; Integer e = new Integer(100); Integer f = new Integer(100); System.out.println(a==b); System.out.println(c==d); System.out.println(e==f)

一道 Java 方法传值面试题——Java方法传值的值传递概念和效果 + Integer 缓存机制 + 反射修改 private final 域

原题代码如下: 1 public void test1() { 2 int a = 1, b = 2; 3 System.out.println("before: a=" + a + ", b=" + b); 4 swap1(a, b); 5 System.out.println("after: a=" + a + ", b=" + b); 6 } 7 8 private void swap1(int i1, int i2)

【翻译】Integer Cache In Java(在Java中的Integer缓存机制)

返回主页 回到顶端 This Java article is to introduce and discuss about Integer Cache. 这篇Java文章将介绍和讨论整数缓存. This is a feature introduced in Java 5 to save memory and improve the performance. 这是Java 5中引入的一个特性,用于节省内存和提高性能. Let us first have a look at a sample cod

Integer 缓存

public class StringAndIntegerTest { public static void main(String[] args) { boolean b = (new Integer(1) == Integer.valueOf("1")); System.out.println(b); } } 点击查看结果 false Integer 源码 /* * Copyright (c) 1994, 2013, Oracle and/or its affiliates. Al

了解关于Integer的缓存类IntegerCache

今天看了一下Integer的源码: public static Integer valueOf(String s) throws NumberFormatException { return Integer.valueOf(parseInt(s, 10)); } /** * Cache to support the object identity semantics of autoboxing for values between * -128 and 127 (inclusive) as re

理解Java Integer的缓存策略

转载自http://www.importnew.com/18884.html 本文将介绍 Java 中 Integer 缓存的相关知识.这是 Java 5 中引入的一个有助于节省内存.提高性能的特性.首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为.接着我们将学习这种实现的原因和目的.你可以先猜猜下面 Java 程序的输出结果.很明显,这里有一些小陷阱,这也是我们写这篇文章的原因. public class JavaIntegerCache { public sta

【转】理解Java Integer的缓存策略

本文将介绍 Java 中 Integer 缓存的相关知识.这是 Java 5 中引入的一个有助于节省内存.提高性能的特性.首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为.接着我们将学习这种实现的原因和目的.你可以先猜猜下面 Java 程序的输出结果.很明显,这里有一些小陷阱,这也是我们写这篇文章的原因. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package com.javapaper