我们对基本数据类型都非常熟悉,例如int、float、double、boolean、char等。基本数据类型是不具备对象的特性
的,比如基本类型不能调用方法、功能简单。为了让基本数据类型也具备对象的特性,Java为每个基本数据类型都提
供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。
包装类(如:Integer,Double等)这些类封装一个相应的基本数据类型数值,并为其提供了一系列操作。
基本类型和包装类之间的对应关系:
包装类主要提供了两大类方法:
1将本类型和其他基本类型进行转换的方法;
2将字符串和本类型及包装类互相转换的方法。
我们以java.lang.Integer包装类为例,来看下包装类的特性。
Integer包装类的构造方法:
如下代码所示:
Integer包装类的常用方法:
实例:
public class Test{ public static void main(String args[]){ //定义int类型变量,值为86 int score1 = 86; //创建Integer包装类对象,表示变量score1的值 Integer score2=new Integer(score1); //将Integer包装类转换为double类型 double score3=score2.doubleValue(); //将Integer包装类转换为float类型 float score4=score2.floatValue(); //将Integer包装类转换为int类型 int score5 =score2.intValue(); //输出结果 System.out.println("Integer包装类:" + score2); System.out.println("double类型:" + score3); System.out.println("float类型:" + score4); System.out.println("int类型:" + score5); } }
编译运行结果:
基本类型和包装类之间经常需要互相转换,还是以Integer包装类为例来进行讲解,其他包装类的用法基本相似。
看下面的代码示例:
在JDK1.5引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了。那什么是装箱和拆箱
呢?我们分别来看下:
装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱。
拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱。
实例:
public class Test{ public static void main(String args[]){ //定义double类型变量 double a = 91.5; //手动装箱 Double b = new Double(a); //自动装箱 Double c = a; System.out.println("装箱后的结果为:" + b + "和" + c); //定义一个Double包装类对象,值为8 Double d = new Double(87.0); //手动拆箱 double e = d.doubleValue(); //自动拆箱 double f = d; System.out.println("拆箱后的结果为:" + e + "和" + f); } }
编译运行结果:
在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。其中,基本类型转换为字符串有三种法:
1使用包装类的toString()方法;
2使用String类的valueOf()方法;
3用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串。
再来看,将字符串转换成基本类型有两种方法:
1调用包装类的parseXxx静态方法;
2调用包装类的valueOf()方法转换为基本类型的包装类,会自动拆箱。
其他基本类型与字符串的相互转化这里不再一一列出,方法都类似。
实例:
public class Test{ public static void main(String args[]){ double m = 78.5; //将基本类型转换为字符串 String str1 = Double.toString(m); System.out.println("m 转换为String型后与整数20的求和结果为: "+(str1+20)); String str = "180.20"; //将字符串转换为基本类型 Double a = Double.valueOf(str); System.out.println("str 转换为double型后与整数20的求和结果为: "+(a+20)); } }
编译运行结果:
(1)所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number的子类。
Number类的成员方法:
(2)Character类
1转义序列
前面有反斜杠(\)的字符代表转义字符,它对编译器来说是有特殊含义的。下面列表展示了Java的转义序列:
2Character类的成员方法: