博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 装箱与拆箱
阅读量:5300 次
发布时间:2019-06-14

本文共 1981 字,大约阅读时间需要 6 分钟。

学习: 

public static void main(String [] args) {        Integer i = 120 ;     //装箱            int a  = i;                   //拆箱    }

通过 javap -c Test.class 查看。class文件可以看到

会执行 

public static Integer valueOf(int i) {        if (i >= IntegerCache.low && i <= IntegerCache.high)            return IntegerCache.cache[i + (-IntegerCache.low)];        return new Integer(i);    }
public int intValue() {        return value;    }

  

 

该方法表示 当 传入的 int 的值 在 -128 ~127 之间时 会从缓冲区中取出一个Integer对象

private static class IntegerCache {        static final int low = -128;        static final int high;        static final Integer cache[];        static {            // high value may be configured by property            int h = 127;            String integerCacheHighPropValue =                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");            if (integerCacheHighPropValue != null) {                try {                    int i = parseInt(integerCacheHighPropValue);                    i = Math.max(i, 127);                    // Maximum array size is Integer.MAX_VALUE                    h = Math.min(i, Integer.MAX_VALUE - (-low) -1);                } catch( NumberFormatException nfe) {                    // If the property cannot be parsed into an int, ignore it.                }            }            high = h;            cache = new Integer[(high - low) + 1];            int j = low;            for(int k = 0; k < cache.length; k++)                cache[k] = new Integer(j++);            // range [-128, 127] must be interned (JLS7 5.1.7)            assert IntegerCache.high >= 127;        }        private IntegerCache() {}    }

  当值大于127 或着 小于 -128 时时会新建一个 Integer 

面试考察点:

Integer a = 1; // 等价于 Integer a = valueOf(1)    Integer b = 1;    System.out.println(a == b); // true   Integer c = 128;    Integer d = 128;    System.out.println(c == d); // false    System.out.println(c.equals(d)); // true

  

转载于:https://www.cnblogs.com/sunyangCoder/p/9069351.html

你可能感兴趣的文章
php连接postgresql数据库
查看>>
移动应用开发选型:向左还是向右?
查看>>
开发进度一
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
CSS
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
程序集的混淆及签名
查看>>
thinkphp框架 中 ajax 的应用
查看>>
JAVA排序(一) Comparable接口
查看>>
判断9X9数组是否是数独的java代码
查看>>
Leetcode 268 Missing Number
查看>>
00-自测1. 打印沙漏
查看>>
UNITY在VS中调试
查看>>
福建省第八届 Triangles
查看>>
P1182 数列分段`Section II` P1316 丢瓶盖 二分答案
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
Scala入门(1)Linux下Scala(2.12.1)安装
查看>>
laravel
查看>>