java自动封箱_java的封箱和拆箱

1、基本概念

字节的单位:byte。位的单位:bit,1byte=8bit

2、8种基本数据类型

4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型。

数据类型

浮点型大小(占字节数,2的几次方)

范围

默认值

包装器类型

byte(字节)

8

-128 - 127

0

Byte

shot(短整型)

16

-32768 - 32768

0

Short

int(整型)

32

-2147483648-2147483648

0

Integer

long(长整型)

64

-9233372036854477808-9233372036854477808

0

Long

float(浮点型)

32

-3.40292347E+38-3.40292347E+38

0.0f

Float

double(双精度)

64

-1.79769313486231570E+308-1.79769313486231570E+308

0.0d

Double

char(字符型)

16

‘ \u0000 - u\ffff ’

‘\u0000 ’

Character

boolean(布尔型)

1

true/false

false

Boolean

3、包装类

包装类即使把基本类型变成对象类型,包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

4、包装类转换关系

基本类型  -->  包装器类

Integer obj=new Integer(10);

包装器类 -->  基本类型

int num=obj.intValue();

字符串 --> 包装器类

Integer obj=new Integer("100");

字符串   -->   基本类型

int num=Integer.parseInt("-45.36");

5、自动装包/拆包(Autoboxing/unboxing)

基本类与包装类的转换,则是装包与拆包

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

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

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

int 是基本类型,直接存储数值

Integer是对象类,new一个对象时用一个引用指向这个对象

Java把内存划分成两种:一种是栈内存,另一种是堆内存

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,而实际的对象是在存储堆内存中

比如

int i = 10;       ----直接在栈中分配空间

Integer j = new Integr(5);     ----对象是在堆内存中,而j(引用变量)是在栈内存中

在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。 因为在堆中分配空间所需的时间远大于从栈中分配存储空间

一.什么是装箱?什么是拆箱?

二.装箱和拆箱是如何实现的

三.面试中相关的问题

一.什么是装箱?什么是拆箱?

在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:

Integer i =new Integer(10);

而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:

Integer i =10;

这个过程中会自动根据数值创建对应的 Integer对象,这就是装箱。

那什么是拆箱呢?顾名思义,跟装箱对应,就是自动将包装器类型转换为基本数据类型:

Integer i =10;//装箱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值