首页 > 代码库 > 包装类
包装类
包装类
一.引出包装类
问题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和基本数据类型之间的转换
String和int/Integer 之间的转换
四.包装类的缓存设计
包装类型对象之间的比较通通使用equals()方法来比较,比较的是包装类包装的数据
五.Integer和int的区别(包装类型和基本数据类型的区别)
1.默认值:Int的默认值是0; Integer的默认值是null
2.包装类中提供了该类型相关的很多算法操作方法
3.Integer和int是不同的数据类型
4.方法中,基本类型变量存储在栈中,包装类型存放在堆中
六.StringBuilder
分别使用String/StringBuffer/StringBuilder来拼接30000次字符串,对比各自损耗的时间!
StringBuilder和StringBuffer都表示可变字符串,功能和方法都是相同的
唯一的区别:
StringBuffer:StringBuffer都使用了一个synchronized修饰符,表示同步的,在多线程并发的时候保证线程安全问题。保证线程安全的时候,性能较低。
StringBuilder:没使用synchronized修饰,不安全,但是性能较高。
包装类