包装类是基本数据类型的引用类型(把基本数据类型变成一个对象,有一些自定义的方法),他们有一一对应的关系。
包装类有8个:Byte Short Integer Long Float Double Character Boolean
类所在的包
java.lang 不需要导包
类的关系
1.5版本实现了自动的拆装箱可以自动的实现互相转化 Integer i =10; int i=new Integer("10")
8个包装类都实现了Serializable, Comparable接口
类对象的创建
八个包装类都有带自己对应类型参数的构造方法
八个包装类有七个含有String类型参数的构造方法重载(Character不存在重载)
Integer i =new Integer(10);
Integer i =new Integer("10");
类的方法
方法都有很多相似性,这里用Integer举例
Xxx=i.XxxValue(); 将一个引用类型拆箱成基本类型(Xxx代表int float等基本数据类型)
这里引入两个概念:
拆箱---将引用数据类型转换成基本数据类型
装箱---将基本数据类型转换成引用数据类型
java1.5版本之前必须手动的拆装箱,就要用到XxxValue()方法
int i = 200; Integer obj = new Integer(m); // 手动装箱 int n = obj.intValue(); // 手动拆箱
1.5版本就可以自动的拆装箱,因此XxxValue()方法基本用不到了
int i = 500; Integer obj = m; // 自动装箱 等价于 Integer obj = Integer.valueOf(m); int n = obj; // 自动拆箱
int=Integer.parseInt() 将一个字符串转化成int,第二个参数是进制默认是10 字符串转化成int还可以用以下的几种方式
int value=Integer.parseInt("10"); //通过类方法将字符串转化成int int value=new Integer("200").parseInt("10");//通过对象将字符串转化成int ---正常没有这么干的,既然是静态方法就不用创建对象了 int value=new Integer("10"); //通过传字符串的构造方法创建对象在拆箱的方式 int value = Integer.valueOf("10").intValue();//先将String转化成Integer对象,再将Integer对象转化成基本int型
Integer=Integer.valueOf(); 将一个int类型转化成Integer对象 可以传int或者String类型
Integer i =10; //等价于Integer i = Integer.valueOf(10);
boolean=i.equals(); 这个方法做了重写 object的equals方法和==是一样的比较的是内存地址 这里equals比较的是值
这里有一道经典的题目
Integer i1=10; Integer i2=10; Integer i3=new Integer(10); Integer i4=new Integer("10"); System.out.println(i1==i2); //true 如果数值超过了Integer在常量池的取值范围-128至127 则创建时i1、i2会在堆中重新new一个对象返回false System.out.println(i1==i3); //false System.out.println(i1==i4); //false System.out.println(i1.equals(i2)); //true 比的是数值 下同 System.out.println(i1.equals(i3)); //true System.out.println(i1.equals(i4)); //true