面向对象高级(9)包装
1、八种基本数据类型对应的包装类
Java针对八种基本数据类型定义了相应的引用类型:包装类(封装类)。有了类的特点,就可以调用类中的方法,Java才能被称作真正的面向对象。
byte--->Byte
short--->Short
int--->Integer
float--->Float
double--->Double
long--->Long
char--->Character
boolean--->Boolean
2、包装类与基本数据类型之间的转化
(1)装箱
把基本数据类型转换为包装类对象(目的是使用专门为对象设计的API和特性)
基本数值---->包装对象
(2)拆箱
把包装类对象拆为基本数据类型(一般是因为需要运算,Java中的大多数运算符是为基本数据类型设计的)
包装对象---->基本数值
目前的JDK版本已经能实现自动装箱与拆箱,但仍需注意,装箱与拆箱操作对应的数据类型应当匹配,如
@Test
public void test3(){
String s1 = "123a";
int i1 = Integer.parseInt(s1);
//编译报错,123a与int类型不匹配。
}
3、基本数据类型,包装类与字符串之间的转换
(1)基本数据类型转换为字符串
使用valueOf方法:
int m = 3;
String m1 = String.valueOf(m);
valueOf方法用于将其他类型的数据转化为对应的字符串。
或采用第二种方法:运用“+”连接符
int m = 3;
String m2 = m+ "";
(2)字符串转为基本数据类型
方式1:除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类
例如:
@Test
public void test2(){
String intnum = "123";
int i = Integer.parseInt(intnum);
System.out.println(i+10);
}
另外,char类型的转化可参考下列代码:
@Test
public void test4(){
char c1 = 'A';
Character C2 = Character.toLowerCase(c1);
char c3 = C2.charValue(); //类型转化
System.out.println(c3);
}
方式2:字符串转为包装类,然后可以自动拆箱为基本数据类型
String s = "99";
Integer s1 = Integer.valueOf(s);
int s2= s1;
注意:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出java.lang.NumberFormatException异常。
4、包装类的其他API
(1)数据类型的最大最小值
Integer.MAX_VALUE和Integer.MIN_VALUE
Long.MAX_VALUE和Long.MIN_VALUE
Double.MAX_VALUE和Double.MIN_VALUE
(2)字符转大小写
Character.toUpperCase('x');
Character.toLowerCase('X');
(3)整数转进制
Integer.toBinaryString(int i)
Integer.toHexString(int i)
Integer.toOctalString(int i)
(4)比较的方法
Double.compare(double d1, double d2)
Integer.compare(int x, int y)
5、包装类对象的特点
包装类 | 缓存对象 |
Byte | -128~127 |
Short | -128~127 |
Integer | -128~127 |
Long | -128~127 |
Float | 没有 |
Double | 没有 |
Character | 0~127 |
Boolean | true和false |
Integer m = 9;
Integer n = 9;
System.out.println(m==n);
//true
int c = 128;
int d = 128;
System.out.println(c==d);
//false,超出-128~127的范围,底层新建对象,地址值不同。