博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 包装类 自动装箱和拆箱
阅读量:6714 次
发布时间:2019-06-25

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

 

包装类(Wrapper Class)

  包装类是针对于原生数据类型的包装

  因为有8个原生数据类型,所以对应有8个包装类。

  所有的包装类(8个)都位于java.lang下。

  Java中的8个包装类分别是:Byte, Short, Integer, Long, Float, Double, Character, Boolean,它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。

  下面以主要Integer类为例说明。

 

Integer

  Integer类将int类型的值包装到一个对象中。

  Integer通过下面这个构造方法构造相应的整型数的对象:

  public Integer(int value);

  public int intValue()方法则返回这个包装类所包装的整型值。

 

自动装箱/拆箱(Autoboxing/unboxing)

  JDK5.0的一个新特性是自动装箱和自动拆箱。

  自动装箱/拆箱大大方便了基本类型数据和它们包装类的使用。

  自动装箱:基本类型自动转为包装类(int >> Integer)

  自动拆箱:包装类自动转为基本类型(Integer >> int)

 

  比如下面的例子:

import java.util.ArrayList;import java.util.Collection;public class BoxTest{    public static void main(String[] args)    {        Collection
c = new ArrayList
(); c.add(3);//将int类型的3转换为Integer类型并放到集合当中 }}

 

缓存

  下面这个程序很奇怪:

  

public class BoxTest2{    public static void main(String[] args)    {        Integer i1 = 200;        Integer i2 = 200;        if (i1 == i2)        {            System.out.println("i1 == i2");        }        else        {            System.out.println("i1 != i2");        }    }}

 

  当两个数都是100的时候==判断相等,当两个数都是200的时候判断不相等。

  查看内部实现代码可知,Integer类有一个缓存,它会缓存-128~127之间的整数

  当调用valueOf的时候,不会生成新的对象,而是从缓存中取出对象。这样可以提高性能。

  使用构造方法的时候肯定会生成新的对象。

转载地址:http://gdkmo.baihongyu.com/

你可能感兴趣的文章
【spring boot2】第4篇:spring boot对静态资源的管理
查看>>
python3 使用argparse更好的组织输入参数
查看>>
Flutter 环境搭建以及创建第一个APP遇到的坑
查看>>
mybatis连表查询
查看>>
【跃迁之路】【694天】程序员高效学习方法论探索系列(实验阶段451-2019.1.14)...
查看>>
[中级] Func() 和 ObjBindMethod() 的关系
查看>>
垃圾回收机制
查看>>
C语言实现一个简易的Hash table(6)
查看>>
【javascript】实现模板生成大量数据
查看>>
win32拖拽编程
查看>>
使用 LineBasedFrameDecoder 和 StringDecoder 解决半包粘包问题
查看>>
分布式缓存Redis使用心得
查看>>
【修真院“善良”系列之三】技术面试的时候该怎么样介绍自己?
查看>>
聊聊flink的EventTime
查看>>
TypeScript 类
查看>>
React 的几种条件渲染以及选择
查看>>
MongoDB查看执行计划
查看>>
Redis学习笔记二:使用Jedis简单操作reids数据库
查看>>
Netty NioEventLoop 启动过程源码分析
查看>>
机器学习在客户管理场景中的应用
查看>>