zoukankan      html  css  js  c++  java
  • Java 装箱、拆箱 包装器

    先说java的基本数据类型。
    java基本数据类型:byte、short、int、long、float、double、char、boolean

    基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。
    装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质。int包装成Integer、float包装成Float
    拆箱:和装箱相反,将引用类型的对象简化成值类型的数据

    说明:
    equals() 比较的是两个对象的值(内容)是否相同。对不同类型的对象equals实现方式是不同的。
    "==" 比较的是两个对象的引用(内存地址)是否相同,也用来比较两个基本数据类型的变量值是否相等。

    java包装器缓存范围
    //在-128~127 之外的数
    Integer i1 = 200;
    Integer i2 = 200;
    System.out.println("i1==i2: "+(i1==i2));
    // 在-128~127 之内的数
    Integer i3 = 100;
    Integer i4 = 100;
    System.out.println("i3==i4: "+(i3==i4));
    输出的结果是:
    i1==i2: false
    i3==i4: true
    在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,所以范例中,i3 与 i4实际上参考至同一个对象。
    如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个Integer对象,所以范例中,i1与i2参考的是不同的对象。
    另外,当不使用自动装箱功能的时候,情况与普通类对象一样,请看下例:
    Integer i3 = new Integer(100);
    Integer i4 = new Integer(100);
    System.out.println("i3==i4: "+(i3==i4));//显示false
    java使用该机制是为了达到最小化数据输入和输出的目的,这是一种优化措施,提高效率。包装器缓存范围:
    Boolean: (全部缓存)
    Byte:    (全部缓存)
    Character (<=127 缓存)
    Integer   (-128~127 缓存)
    Short     (-128~127 缓存)
    Long      (-128~127 缓存)
    Float     (没有缓存)
    Doulbe    (没有缓存)

    javap是Java自带的一个工具,可以反编译,也可以查看Java编译器生成的字节码。
    反编后的代码意思,可查看 http://cooldatabase.iteye.com/blog/637797

  • 相关阅读:
    杭电1005
    幂运算
    oj题目分类
    js判断手机或Pc端登陆.并跳转到相应的页面
    sessionStorage或localStorage实现注册登录demo
    html5手机端定位
    微信小程序开发基础知识总结
    eCharts.js使用心得
    前端性能优化--图片懒加载(lazyload image)
    19 款仿 Bootstrap 后台管理主题下载,finrUI控件,好用的ui框架
  • 原文地址:https://www.cnblogs.com/robertsun/p/4214656.html
Copyright © 2011-2022 走看看