包装类
基本数据类型所对应的引用数据类型
基本数据类型存在栈里面,存的地址
引用数据类型存在堆里面
Object可以统一所有数据,包装类默认的是null
类型转换与装箱,拆箱
八种包装类提供不同类型间的装换方式:
-
Number父类提供的6个共性方法
-
parseXXX()静态方法 (字符串和基本类型的装换
-
valueOf()静态方法 (基本类型转引用类型
需要保证类型兼容,否则抛出NumberFormatException异常
package studyObject.packet; public class Demo01 { public static void main(String[] args) { // int num = 10; //类型装换 :装箱 基本类型改为引用类型 int num1 = 10; //使用Integer类创建对象 Integer integer1 = new Integer(num1); Integer integer2 = Integer.valueOf(num1); //类型装换 拆箱 引用类型改基本类型 Integer integer3 = new Integer(100); int num2 = integer3.intValue(); //上面是JDK1.5前面使用,1.5后提供自动装箱,拆箱功能 int age = 30; //自动装箱 Integer integer4 = age; //自动拆箱 int age2 = integer4; //基本类型和字符串之间的装换 //1基本类型转字符串 int n1 = 100; //1.1使用+号 String s1 = n1+""; //1.2使用Integer中的toString方法 String s2 = Integer.toString(n1); n1=15; String s3 = Integer.toString(n1,16);//变为16进制返回 System.out.println(s1); System.out.println(s2); System.out.println(s3); //2字符串转基本类型 String str = "150"; int n2 = Integer.parseInt(str); System.out.println(n2); //boolean字符串形式转成基本类型:“true”-----》true 非“true”----》false String str2 = "true"; String str2_1 = "tue"; boolean b1 = Boolean.parseBoolean(str2); boolean b1_1 = Boolean.parseBoolean(str2_1); System.out.println(b1); System.out.println(b1_1); } }
整数缓存区
java预先创建了256个常用的整数包装类型对象
范围-128 ----- 127 在范围内就指向缓存区里的
package studyObject.packet; public class Demo02 { public static void main(String[] args) { //面试题 Integer integer1 = new Integer(100); Integer integer2 = new Integer(100); System.out.println(integer1==integer2);//结果false 因为引用类型比较地址,new了两个,地址不一样 Integer integer3 = 100;//自动装箱 // Integer integer3 = Integer.valueOf(100);//自动装箱实际是使用valueOf方法 /* 因为使用valueOf方法如果数字大于-128,小于127 就会从cache数组(Integer缓存区)里面取,所以两个地址一样 */ Integer integer4 = 100; System.out.println(integer3==integer4);//true Integer integer5 = 200;//自动装箱 Integer integer6 = 200; System.out.println(integer5==integer6);//false } }
拆箱与装箱(难度:★ 频率:★)