JAVA常见工具类之包装类(超详细)

1、包装类

出于对性能的考虑,Java编程语言不把基本数据类型看作对象。因为处理对象需要额外的系统开销,所以,如果将基本数据类型当作对象,就会给语言性能带来负面影响。然而,许多Java中的方法需要将对象作为参数,为了让基本数据类型的这些数据也具有面向对象的特性,Java编程语言提供了包装类来将基本数据类型看作对象,基本类型和包装类型之间能够互相转换。

1. 包装类简介

包装类型和基本数据类型的名字基本相同,首字母变成了大写,但是int和char的包装类型为Integer和Character。基本数据类型不是对象层次结构的组成部分。有时需要像处理对象一样处理这些基本数据类型,可通过相应的“包装类”来将其“包装”。

基本数据类型及其包装类型

基本类型

包装

boolean

Boolean

byte

Byte

char

Character

double

Double

float

Float

int

Integer

long

Long

short

Short

基本数据类型的变量没有默认值,而包装类型的变量默认值是null。在这八个包装类中,除了Integer和Character类以外,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可。对于包装类说,这些类的用途主要包含两种:

a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

2. 基本类型与包装类之间的转换

包装类有什么作用呢?包装类能够完成数据类型之间(除boolean)的相互转换,尤其是基本数据类型和String类型的转换。包装类中包含了对应基本数据类型的值,封装了String和基本数据类型之间相互转换的方法,还有一些处理这些基本数据类型时非常有用的属性和方法。由于八个包装类的使用比较类似,下面以最常用的Integer类为例子介绍包装类的实际使用。

1、实现int和Integer类之间的转换

在实际转换时,使用Integer类的构造方法和Integer类内部的intValue()方法实现int和Interger类型之间的相互转换,实现的代码如下:

int n = 10;
//将int类型转换为Integer类型
Integer in = new Integer(n);
//将Integer类型的对象转换为int类型
int m = in.intValue();
2、Integer类内部的常用方法

在Integer类内部包含了一些和int操作有关的方法,下面介绍一些比较常用的方法:

(1)parseInt方法

public static int parseInt(String s)

该方法的作用是将数字字符串转换为int数值。在界面编程中,将字符串转换为对应的int数字是一种比较常见的操作。使用示例如下:

String s = "123";

int n = Integer.parseInt(s);

则int变量n的值是123,该方法实际上实现了字符串和int之间的转换,如果字符串包含非数字字符,则程序执行将出现异常。

另外一个parseInt方法:

public static int parseInt(String s, int radix)

则实现将字符串按照参数radix指定的进制转换为int,使用示例如下:

int n = Integer.parseInt("120",10);
//将字符串"120"按照十进制转换为int,则结果为120
int n = Integer.parseInt("12",16);
//将字符串"12"按照十六进制转换为int,则结果为18
int n = Integer.parseInt("ff",16);
//将字符串"ff"按照十六进制转换为int,则结果为255

这样可以实现更灵活的转换。

(2)toString方法

public static String toString(int i)

该方法的作用是将int类型转换为对应的String类型。

使用示例代码如下:

int m = 1000;
String s = Integer.toString(m);

则字符串s的值是"1000"。

3. 字符串与基本数据类型、包装类型转换

1、包装类转换成字符串

几乎java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。例如:Characrer、Integer、Float、Double、Boolean、Short等类的toString()方法分别用于将字符型、整型、浮点型、双精度浮点型、短整型等类转换为字符串。举例如下所示:

int i1=10;
float f1=3.14f;
double d1=3.1415926;
Integer i1 = new Integer(i1);//生成Integer类
Float f1 = new Float(f1); //生成Float类
Double d1 = new Double(d1); //生成Double类

//分别调用包装类的toString() 方法转换为字符串

String si1 = i1.toString();
String sf1 = f1.toString();
String sd1 = d1.toString();
System.out.println("si1"+si1);
System.out.println("sf1"+sf1);
System.out.println("sd1"+sd1);

整数转换成字符串也可以采用如下方法:

int myInt = 1234;
String myString = "" + myInt;

其它数据类型可以利用同样的方法转换成字符串

2、字符串转换为基本数据类型 

字符串转换成整数:

String myNumber ="1234";
int myInt = Integer.parseInt(myNumber);

字符串转换成byte、shor、int、float、double、long 等数据类型,可以分别参考Byte、Short、Integer、Float、Double、Long 类的parseXXX() 方法。

JDK自从5.0版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。使用示例代码如下:

//int类型会自动转换为Integer类型
int m = 12;
Integer in = m;
//Integer类型会自动转换为int类型
int n = in;

所以在实际使用时的类型转换将变得很简单,系统将自动实现对应的转换。Java允许基本类型和包装类型之间进行自动转换。例如可以自动装箱将一个基本数据类型转换为对象。

Integer intObject=new Integer(2);等价于 Integer intObject=2; //自动装箱

将基本类型转换为包装类对象的过程称为装箱,相反的过程称为拆箱。如果一个基本类型出现在需要对象的环境中,编译器会将基本类型值进行自动装箱;如果一个对象出现在需要基本类型的环境中,编辑器将对象进行自动拆箱。考虑下面的例子:

1:Integer[ ] intArray = {1,2,3};

2:System.out.println(intArray[0] +  intArray [1] + intArray[2]);

在第一行中,基本类型1、2、3被自动装箱成对象new Integer(1)、new Integer(2)、new Integer(3) ,在第二行中,对象intArray[0]、intArray[0]、intArray[0]被自动转换为int值,然后进行相加。

【例】包装类、基本数据类型和字符串之间转换的综合案例。

    public class TestWrapper {
        public static void main(String ars[]){
            Double obj_d = new  Double(3.14);        //基本数据类型转换为包装类
            double d = obj_d.doubleValue();            //包装类转换为基本数据类型
            Integer obj_i = new Integer("5");        //字符串转换为包装类
            String s = obj_i.toString();                //包装类转换为字符串转换
            double n = Double.parseDouble("5");        //字符串类转换为基本数据类型
            String s = obj_j.toString();                //基本数据类型转换为字符串类型
            Integer aa = 9;                         //自动装箱
            int bb = aa;                            //自动拆箱
        }
    }

        通过以上案例可以看出,基本数据类型和字符串类型转换为包装类,使用包装类的构造器来完成;包装类转换为基本数据类型,调用包装类的xxxValue()方法来完成;包装类转换为字符串类型,调用包装类的toString()方法;字符串转换为基本数据类型,调用包装类的parseXXX()方法;基本数据类型转换为字符串类型,先把基本数据类型转换为包装类型,然后再调用包装类的toString()方法;装箱就是把基本类型用它们相应的包装类型包装起来,使其具有对象的性质。int包装成Integer、float包装成Float,拆箱和装箱相反,将包装类型的对象转化成基本类型类型的数据。

  • 17
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值