包装类
把基本数据类型包装成一个对象,使基本数据类型变得更强大,以面向对象的思想来去使用这些类型
装箱操作:把基本数据类型变成包装类
格式:(两种)
Integer num = new Integer(123);
Integer num1 = Integer.valueOf(123);
拆箱操作:把包装类的对象转换成对应的基本数据类型的变量(使用包装类的intValue方法)
格式:Integer num2 = Integer.valueOf(12);
格式:int num3 = num2.intValue();
自动装箱:可以直接把一个基本数据类型的值赋值给包装类对象
自动拆箱:可以直接把一个包装类对象赋值给基本数据类型的变量
基本数据类型与包装类区别?
1.默认值
int 0
Integer null
2.包装类当中提供了很多方法直接给我们使用
Integer.toBinaryString(5)
3.集合框架当中不能存放基本数据类型,只能存放对象
基本数据类型跟包装类区别使用?
在类当中,成员变量一般都使用包装类
在方法当中,我们一般都是使用基本数据类型
方法中,基本数据类型存储在栈当中,包装类存放在堆当中
valueOf缓存设计
当使用 Integer i = new Integer(5);格式创建的每一个对象都会创建一个新的地址;
而使用Integer i = Integer.valueOf(5);格式创建时,是有一个缓存设计的,范围在-128到127,在这之间第二次创建的对象都是之间使用第一次创建对象的地址(本质上还是第一种创建格式,只是加上了缓存判断)
字符串String与基本数据类型,包装类型之间转换问题?
1.字符串转换为包装类(字符串当中必须是数字)
例:Integer i = new Integer(“123”);
2.包装类转换成字符串(使用toString方法)
例:Integer i2 = Integer.valueOf(100);
String str = i2.toString();
3.基本数据类型转换为字符串类型(直接在后面+"")
例:int a = 10;
String str2 = a + " ";
4.把字符串转换成基本数据类型(使用包装类的parseInt方法,Int是基本数据类型)
例:String str3 = “200”;
int i3 = Integer.parseInt(str3);
4.字符串转boolean (除了true,其他都是false)
例:Boolean b = new Boolean(“a”);