首页 > 代码库 > 包装类

包装类

包装类

一.引出包装类

问题1:面向对象里,“一切皆对象”,问题int age=17,此时age代码没有对象,基本数据类型变量不是对象。

问题2:现在使用double类型来表示学生的考试成绩,double类型初始值为0,但是怎么表示一个人缺考和考试为0分。

问题原因:基本数据类型缺少对象,如果需要对象,得先有类。

此时我们可以为每一个基本数据类型都编写一个对应的包装类,类中包含了该基本类型的一个值。

 

二.包装类的装箱和拆箱

1.装箱:把一个基本类型的值,转换为对应的包装类对象。

2.拆箱: 把包装类的对象,转换为对应的基本数据类型变量。

Java5开始,SUN提供自动装箱,自动拆箱功能》》》》底层依然是手动装箱和拆箱操作

1.自动装箱:可以直接把一个基本数据类型值赋给对应的包装类对象

2.自动拆箱:可以直接把一个包装类对象赋给对应基本数据类型变量

Object obj=10;

1.自动装箱:Integer i=10;

2.引用的自动类型转换,把子类对象赋给父类变量:Obj obj=i;

Object可以接收一切数据类型的值

Object数组:Object[]该数组可以装一切数据类型

 

三.包装类的基本使用

1.包装类中的常量:MAX_VALUE/MIN_VALUE/SIZE(内存中存储占多少位)

2.包装类的构造器,构造器作用:创建包装类的对象

3.基本类型和包装类型的转换

4.String和基本数据类型之间的转换

Stringint/Integer 之间的转换

 

 

四.包装类的缓存设计

 

包装类型对象之间的比较通通使用equals()方法来比较,比较的是包装类包装的数据

 

五.Integerint的区别(包装类型和基本数据类型的区别)

1.默认值:Int的默认值是0Integer的默认值是null

2.包装类中提供了该类型相关的很多算法操作方法

3.Integerint是不同的数据类型

4.方法中,基本类型变量存储在栈中,包装类型存放在堆中

 

 

 

 

六.StringBuilder

分别使用String/StringBuffer/StringBuilder来拼接30000次字符串,对比各自损耗的时间!

StringBuilderStringBuffer都表示可变字符串,功能和方法都是相同的

唯一的区别:

StringBufferStringBuffer都使用了一个synchronized修饰符,表示同步的,在多线程并发的时候保证线程安全问题。保证线程安全的时候,性能较低。

StringBuilder:没使用synchronized修饰,不安全,但是性能较高。

包装类