day15
因为Java是面向对象的语言,所以很多API或新特性都是针对“对象”来设计的,但是Java设计之初时,
是C语言很盛行的时候,所以Java保留了C语言中的8种基本数据类型,保留它们有好处,速度快,计算方便,
每一种数据类型都有固定的大小...
如果我们的数据使用了8种基本数据类型的变量来保存,后面有想使用Java中只针对“对象”来设计的很多API或新特性时,怎么办?
Java就为8种基本数据类型设计它们的包装类。
只针对“对象”来设计的很多API或新特性
例如:集合,泛型只针对引用数据类型
包装类:为了包装基本数据类型的数据为“对象”。
byte->Byte
short->Short
int->Integer
long->Long
float->Float
double->Double
char->Character
boolean->Boolean
装箱与拆箱:
装箱:把基本数据类型的数据“包装”为对象,称为装箱 装的目的是为了使用只针对“对象”来设计的很多API或新特性
拆箱:把包装类的对象“拆开”为基本数据类型的数据,称为拆箱 拆的目的是为了计算简便,高效
装箱:
手动装箱:
Integer i = new Integer(num);
自动装箱
Integer j = int的值或变量;
拆箱:
手动拆箱:
int num = Integer的对象.intValue();
自动拆箱:
int num = Integer的对象;
说明:不管是拆箱还是装箱都是对应类型之间的,即
int -> Integer
double -> Double
....
数据类型的转换:
1、基本数据类型之间的转换:自动类型转换与强制类型转换
2、父子类之间转换:向上转型与向下转型
3、包装类与基本数据类型之间:装箱与拆箱
基本数据类型之间的比较:
== 比较的是数据值
包装类之间的比较:
== 比较的是地址值
equals:推荐使用这个
原因是包装类对象,有一部分是缓存对象,(常量对象)
Byte:-128~127
Short:-128~127
Integer:-128~127
Long:-128~127
没有缓存对象:
Float
Double
Character:0~127 最早ASCII码的范围128个字符
Boolean:true,false
以:Integer为例
1、常量
Integer.MAX_VALUE
Integer.MIN_VALUE
2、方法
(1)比较包装类对象的大小
int compareTo(xx)
(2)和String类型的转换
A:从String的对象 -> 包装类的对象
"123" -> Integer
Integer Integer.valueOf(字符串)
B:从String的对象 -> 基本数据类型
"123" -> 123
int Integer.parseInt(字符串)
C:把包装类的对象->字符串
toString()
D:把基本数据类型 -》字符串
+ ""
(3)转成各种进制的形式