包装类产生原因:因为基本数据类型无法进行对象化处理,所以就引入了包装类。
Java中的数据类型:
1.基本数据类型
- 数值型
- 整数类型 byte、short、int、long
- 浮点类型 float、double
- 字符型 char
- 布尔型 boolean
2.引用数据类型
- 类 class
- 接口 interface
- 数组
包装类:拥有属性、方法,可以对象化交互
包装类与基本数据类型对应
Java中数值型包装类都是继承自number类型,都是用final修饰的,不可以继承
Boolean和character都是继承自Object类
- 装箱 基本数据类型->包装类
- 拆箱 包装类->基本数据类型
//自动装箱
int t1=2;
Integer t2=t1;
//手动装箱
Integer t3=new Integer(t1);
//自动拆箱
int t4=t2;
//手动拆箱
int t5=t2.intValue();
基本数据类型和字符串之间的转换
//基本数据转换为字符串
int t1=2;
String t2=Integer.toString(t1);
//字符串转化为基本数据类型
1、包装类的parse
int t3=Integer.parseInt(t2);
2、
int t4=Integer.valueOf(t2);
包装类对象的初始值
- 基本数据类型的初始值
- 包装类型的初始值
null
包装类对象间的比较
Integer one=new Integer(100);
Integer two=new Integer(100);
System.out.println(one==two);//false
Integer three=100;
System.out.println(three==100);//true
Integer four=100;
System.out.println(three==four);//true
Integer five=200;
System.out.println(five==200);//true
Integer six=200;
System.out.println(five==six);//true
1、new是开辟两块不同的空间所以one==two false
2、Integer three=10;自动装箱内部执行:Integer.valueof(10)并在内存中开辟一款缓存区,判断three==100时,自动拆箱 值相同 true
3、Integer four=100时Integer.valueof(10) 在缓存区中找到这个10 所以three==four true
4、true
5、因为200不在-128-127之间 所以不能执行Integer.valueof(10) 把10存到缓存区 只能拿通过构造函数new Integer(200)来重新在内存中构造一块空间 所以five==six false
除了float、double其他数据类型都有对象池(缓冲区)这个概念
Double d1=Double.varleOf(100);
System.out.println(d1==100);//true
Double d2=Double.varleOf(100);
System.out.println(d1==d2);//false