基本数据类型所对应的引用数据类型。
1.基本类型功能比较弱。 2.Object可统一所有数据,包装类的默认值是null。
基本数据类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
装箱: 把基本类型转换成包装类型, 把数据从栈中放到堆里;
eg: 手动装箱
int n = 100;
//手动装箱
Integer integer = new Integer(n);
拆箱: 把包装类型转换成基本类型, 把数据堆从中放到栈里;
eg: 手动拆箱
//手动拆箱
int m = integer.intValue();
JDK 1.5之后,自动装箱、拆箱。基本数据类型和包装类自动转换
//自动装箱
Integer integer2 = 50;//Integer.valueOf();
//自动拆箱
int y = integer2; //integer.intValue();
eg:
Integer integer3 = 100;
Integer integer4 = 100;
Integer integer5 = 200;
Integer integer6 = 200;
//判断下面输出语句的结果
System.out.println(integer3 == integer4);
System.out.println(integer5 == integer6);
res:
true
false
Java预先创建了256个常用的整数包装类型对象。范围 -128 ~ 127
目的:提高效率,节省内存,实现对已创建的对象进行复用。
自动装箱是使用的是 Integer.valueOf(); 这个方法, 当包装的数据在-128 ~ 127 的范围内, 直接指向缓冲区中的对象,
若超出范围就 return new Integer();因此, 在上面的面试题中, 当integer3和integer4的值为100时, 相当于同时指向了缓冲区中值为100的同一个整数包装类型对象,
所有当使用 == 比较时(引用数据类型为比较地址), integer3和integer4指向的地址相同, 返回值为true;当数值超出缓冲区, 自动包装就会新new一个Integer对象, 所有integer5和integer6相当于两个新的Integer对象, 地址不同,
返回值为false;
注意:需保证类型兼容,否则抛出NumberFormatException异常。
eg:
//字符串转基本数据类型
String s = "100";
//注意:需保证类型兼容,否则抛出NumberFormatException异常。
int n = Integer.parseInt(s);
+
号字符串拼接eg:
String s2 = 100 + "";
eg:
String s3 = Integer.toString(n);
注意: 只要字符串不是"true",都是false
eg:
//字符串转成boolean
boolean b1=Boolean.parseBoolean("true");//true
boolean b2=Boolean.parseBoolean("false");//false
boolean b3=Boolean.parseBoolean("xxx");//只要字符串不是"true",都是false
eg:
//Character实现大小写转换
System.out.println(Character.toUpperCase('a'));
System.out.println(Character.toLowerCase('A'));
5.3.2 Character实现大小写转换