Java—— 包装类
说明:
包装类:基本数据类型对应的引用类型(对象)
作用:
集合不能存储基本数据类型,要将基本数据类型转化为包装类进行存储
一个方法的形参是Object类型,传递的参数只能是对象,需要将基本数据类型转化为包装类
对应关系:
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
获取Integer对象的方式(了解)
构造方法:
方法名 | 说明 |
public Integer(int value) | 根据传递的整数创建一个Integer对象 |
public Integer(String s) | 根据传递的字符串创建一个Integer对象 |
静态方法:
方法名 | 说明 |
public static Integer value0f(int i) | 根据传递的整数 创建一个Integer对象 |
public static Integer valueOf(String s) | 根据传递的字符串 创建一个Integer对象 |
public static Integer valueOf(String s, int radix) | 根据传递的字符串和进制 创建一个Integer对象 |
代码演示:
public class Test1 {public static void main(String[] args) {Integer i1 = new Integer(10);System.out.println(i1);//10Integer i2 = new Integer("10");System.out.println(i2);//10Integer i3 = Integer.valueOf(15);System.out.println(i3);//15Integer i4 = Integer.valueOf("15");System.out.println(i4);//15Integer i5 = Integer.valueOf("100", 8);System.out.println(i5);//64}
}
这两种方式获取对象的区别(掌握)
静态方法获取对象底层有优化:
在实际开发中,-128~127之间的数据用的比较多
所以,将提前创建好这个范围内的每一个数据的对象
如果要用到了直接返回已经创建好的对象,不会创建新的
自动装箱和自动拆箱
在JDK5的时候提出了自动装箱和自动拆箱机制
自动装箱:基本数据类型会自动的变成其对应的包装类
自动拆箱:包装类自动的变成其对象的基本数据类型
代码演示:
public class Test2 {public static void main(String[] args) {//自动装箱//在底层,此时还会去自动调用静态方法valueof得到一个Integer对象,//只不过这个动作不需要我们自己去操作了Integer i1 = 10;//自动拆箱Integer i2 = Integer.valueOf("20");int i = i2;System.out.println(i);//20//在JDK5以后,int和Integer可以看做是同一个东西,因为在内部可以自动转化}
}
Integer成员方法
方法名 | 说明 |
public static String toBinaryString(int i) | 得到二进制 |
public static String toOctalString(int i) | 得到八进制 |
public static String toHexString(int i) | 得到十六进制 |
public static int parselnt(String s) | 将字符串类型的整数转成 int类型的整数 |
代码演示:
public class Test3 {public static void main(String[] args) {String str1 = Integer.toBinaryString(100);System.out.println(str1);//1100100String str2 = Integer.toOctalString(100);System.out.println(str2);//144String str3 = Integer.toHexString(100);System.out.println(str3);//64int i = Integer.parseInt("1234");System.out.println(i);//1234System.out.println(i + 1);//1235}
}
注意事项:
1:在类型转换的时候,括号中的参数只能是数字不能是其他,否则代码会报错
2:8种包装类当中,除了Character都有对应的parseXXX的方法,进行类型转换例如可用Boolean.parseBoolean("true")将字符串true转化为布尔类型