• 包装类的自动装箱与拆箱


    JDK5.0之前

    int i = 1;
    //基本数据类型int
    Integer j = new Integer(i);//手动装箱
    int k = j.intValue();//手动拆箱

    JDK5.0之后

    Integer i = 1;//自动装箱
    int j = i;//自动拆箱
    
    Integer i = 10;
    System.out.println(i--);//10,计算时的自动拆箱

    自动装箱的对象缓存

                    Integer s= 10;
            Integer q= 10;
            System.out.println(s==q);   //true
            Integer w= 200;
            Integer e= 200;
            System.out.println(w==e);   //false            

    这是因为在自动装箱的时候,-128到127的值被装箱成Integer对象存在内存中是可以被重用的,当调用valueOf的时候,不会生成新的对象,而是从缓存中取出对象。这样可以提高性能,因此第一个比较结果会输出true,而超出以上范围的数值装箱后的对象并不会被重用,那么就相当于new两个Integer对象,比较的结果自然是false。

  • 相关阅读:
    C#
    数据库SQL Server
    JavaScript题目
    vscode: Visual Studio Code 常用快捷键
    jQuery教程
    JavaScript快速排序
    JS编程艺术
    JS
    linux 笔记
    积累的各种资源
  • 原文地址:https://www.cnblogs.com/xurui1995/p/5211556.html
Copyright © 2020-2023  润新知