Java 中的包装类 Java 中的包装类 Java 中基本类型和包装类之间的转换 Java 中基本类型和字符串之间的转换

相信各位小伙伴们对基本数据类型都非常熟悉,例如 int、float、double、boolean、char 等。基本数据类型是不具备对象的特性的,比如基本类型不能调用方法、功能简单。。。,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。 

基本类型和包装类之间的对应关系:

Java 中的包装类
Java 中的包装类
Java 中基本类型和包装类之间的转换
Java 中基本类型和字符串之间的转换

包装类主要提供了两大类方法:

1. 将本类型和其他基本类型进行转换的方法

2. 将字符串和本类型及包装类互相转换的方法

我们以 Integer 包装类为例,来看下包装类的特性。

Integer 包装类的构造方法:

Java 中的包装类
Java 中的包装类
Java 中基本类型和包装类之间的转换
Java 中基本类型和字符串之间的转换

如下代码所示:

Java 中的包装类
Java 中的包装类
Java 中基本类型和包装类之间的转换
Java 中基本类型和字符串之间的转换

Integer包装类的常用方法:

Java 中的包装类
Java 中的包装类
Java 中基本类型和包装类之间的转换
Java 中基本类型和字符串之间的转换

Java 中基本类型和包装类之间的转换

基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦):

Java 中的包装类
Java 中的包装类
Java 中基本类型和包装类之间的转换
Java 中基本类型和字符串之间的转换

在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了。

那什么是装箱和拆箱呢?我们分别来看下

装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

// 自动封箱/拆箱是JDK1.5的特性之一
// 将基本类型的数据直接赋值给了对应的引用类型的对象 --- 自动封箱
// 自动封箱在底层会默认调用Integer类身上的静态方法valueOf
Integer in = Integer.valueOf(i);
Integer in = i;

Java 中的包装类
Java 中的包装类
Java 中基本类型和包装类之间的转换
Java 中基本类型和字符串之间的转换

拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱

Integer in = new Integer(5);
// 将引用类型的对象直接赋值给了对应的基本类型的变量 --- 自动拆箱
// 自动拆箱在底层会默认调用对象身上的***Value()
// int i = in.intValue();
int i = in;

Java 中的包装类
Java 中的包装类
Java 中基本类型和包装类之间的转换
Java 中基本类型和字符串之间的转换

实例:

public class IntegerDemo2 {

    public static void main(String[] args) {

        // Integer i1 = Integer.valueOf
        // 如果值不在-128~127范围内
        // 底层的valueOf方法是调用了构造方法来返回一个新的对象
        // 如果值在-128~127的范围内的时候
        // 从cache数组中的对应下标位置上取值
        Integer i1 = -125;
        Integer i2 = -125;

        System.out.println(i1 == i2);

        Integer in = 400;
        int i = 400;
        // 当包装类和对应的基本类型在运算的时候会进行自动拆箱
        System.out.println(in == i);

    }

}

Java 中基本类型和字符串之间的转换

在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。

其中,基本类型转换为字符串有三种方法:

1. 使用包装类的 toString() 方法

2. 使用String类的 valueOf() 方法

3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

Java 中的包装类
Java 中的包装类
Java 中基本类型和包装类之间的转换
Java 中基本类型和字符串之间的转换

再来看,将字符串转换成基本类型有两种方法:

1. 调用包装类的 parseXxx 静态方法

2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱

Java 中的包装类
Java 中的包装类
Java 中基本类型和包装类之间的转换
Java 中基本类型和字符串之间的转换

注:其他基本类型与字符串的相互转化方法都类似

实例:

public class IntegerDemo3 {

    public static void main(String[] args) {

        Integer in = new Integer("-284");
        System.out.println(in);

        int i = Integer.parseInt("259");
        System.out.println(i);

        Double dou = new Double("3.954");
        System.out.println(dou);

        // 不考虑大小写的情况只要不是true那么就是false
        Boolean b = new Boolean("true");
        System.out.println(b);

        // NaN是唯一的一个值
        // NaN与任何东西都不相等,包括自己本身
        // System.out.println(Double.NaN == Double.NaN);
        System.out.println(Double.isNaN(5.8 / 4.32));
    }

}

运行结果:

-284
259
3.954
true
false

Character 方法

下面是Character类的方法:

序号 方法与描述
1 isLetter()
是否是一个字母
2 isDigit()
是否是一个数字字符
3 isWhitespace()
是否是一个空格
4 isUpperCase()
是否是大写字母
5 isLowerCase()
是否是小写字母
6 toUpperCase()
指定字母的大写形式
7 toLowerCase()
指定字母的小写形式
8 toString()
返回字符的字符串形式,字符串的长度仅为1

对于方法的完整列表,请参考的 java.lang.Character API 规范。