• 01 java基本类型和包装类型的区别? look


    基本类型和包装类型的区别?

    1 包装类型可以为 null,而基本类型不可以

    数据库的查询结果可能是 null,如果使用基本类型的话,因为要自动拆箱(将包装类型转为基本类型,比如说把 Integer 对象转换成 int 值),就会抛出 NullPointerException 的异常。

            int i1 = null;// 模拟数据库查询出来的数据
            Integer i2 = null;// 模拟数据库查询出来的数据
    

    2 包装类型可用于泛型,而基本类型不可以。

    泛型不能使用基本类型,因为使用基本类型时会编译出错。

    List<int> list = new ArrayList<>(); // 提示 Syntax error, insert "Dimensions" to complete ReferenceType
    List<Integer> list = new ArrayList<>();
    

    为什么呢?因为泛型在编译时会进行类型擦除,最后只保留原始类型,而原始类型只能是 Object 类及其子类——基本类型是个特例。

    3 虚拟机中存放位置的不同

    • 基本数据类型的局部变量存放在 Java 虚拟机栈中局部变量表中
    • 基本数据类型成员变量(未被 static 修饰 )存放在 Java 虚拟机的堆中
    • 包装类型属于对象类型,我们知道几乎所有对象实例都存在于堆中

    ⚠️注意 : 基本数据类型存放在栈中是一个常见的误区! 基本数据类型的成员变量如果没有被 static 修饰的话(不建议这么使用,应该要使用基本数据类型对应的包装类型),就存放在堆中。会产生异常

    class BasicTypeVar{
      private int x;
    }
    

    4 基本类型比包装类型更高效

    • 包装类属于对象类型占用空间大, 基本数据类型占用的空间非常小。(等同于效率高)
    • 包装类型为了提升效率 添加了缓存机制
  • 相关阅读:
    程序员通过什么渠道接外包项目
    中小型软件项目开发一般流程建议
    DevExpress GridControl功能总结
    页面UI注意事项,你在乎吗?
    加密,解密
    本地化(国际化)
    AutoLayout(自动布局)
    UItableView与UICollectionView
    分享iOS开发常用(三方类库,工具,高仿APP,实用网站,技术干货)
    NSPredicate
  • 原文地址:https://www.cnblogs.com/look-word/p/16414813.html
Copyright © 2020-2023  润新知