14.Java包装类

来源:互联网 发布:新路由器有信号没网络 编辑:程序博客网 时间:2024/04/30 05:04
14.Java包装类
转载请保留原文链接: http://dashidan.com/article/java/basic/Java包装类.html

Java语言是一个面向对象的语言,但Java中的基本数据类型却是不面向对象的. 这在实际使用时存在很多的不便.

为了解决这个不足(例如:集合类中只能存放对象, 不能存放基本类型数据), 在设计类时为每个基本数据类型设计了一个对应的类进行代表, 这样八个和基本数据类型对应的类统称为包装类(Wrapper Class), 也翻译为外覆类或数据类型类.

① 包装类对应表— 包装类对应表 基本数据类型 包装类 byte Byte boolean Boolean boolean Boolean short Short char Character int Integer long Long float Float double Double

在这八个类名中,除了Integer和Character类, 其它六个类的类名和基本数据类型相比, 只是类名的第一个字母大写.

② 包装类的使用—对于包装类说,这些类的用途主要包含两种:* 作为和基本数据类型对应的类类型存在,方便涉及到对象的操作.* 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法.

由于八个包装类的使用比较类似,以最常用的`Integer`类为例, 介绍包装类的应用.

###1.实现int和Integer类之间的转换使用`Integer`类的构造方法和`intValue()`方法实现这些基本类型和包装类之间的相互转换.代码示例:
/** 将int类型转换为Integer类型*/int intNum = 10;Integer integer = new Integer(intNum);/** 将Integer类型转换为int类型*/int intValue = integer.intValue();
###2.`Integer`类常用方法* parseInt方法该方法的作用是将字符串转换为对应的数值. 代码示例:
String s = "123";int n = Integer.parseInt(s);//将字符串"120"按照十进制转换为int,则结果为120int n = Integer.parseInt("120",10);//将字符串"12"按照十六进制转换为int,则结果为18int n = Integer.parseInt("12",16);//将字符串"ff"按照十六进制转换为int,则结果为255int n = Integer.parseInt("ff",16);

如果字符串都包含的不是都是数字字符,则程序执行将出现异常报错.

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

代码示例:

int m = 1000;String s = Integer.toString(m);//将int值转换为特定进制的字符串:
* 整数转化为字符串有2种方式:`Integer.toString()`方法和`整数 + “”`方式, 应该用那种呢? 先放结论: 用`整数 + “”`方式实现.![真相只有1个](http://localhost/img/common/truth.jpg)附带真像的代码:
package com.dashidan.lesson13;/** * 大屎蛋教程网-dashidan.com * <p> * Java教程基础篇: 13. Java包装类 * 整数转化为字符串 */public class Demo2 {    public static void main(String[] args) {        int count = 100000;        long t1 = System.currentTimeMillis();        System.out.println("");        for (int i = 0; i < count; i++) {            Integer in = new Integer(100);            String s1 = in.toString();        }        long t2 = System.currentTimeMillis();        System.out.println(" t2 - t1 " + (t2 - t1));        for (int i = 0; i < count; i++) {            String s2 = 100 + "";        }        long t3 = System.currentTimeMillis();        System.out.println(" t3 - t2 " + (t3 - t2));    }}
输出: t2 - t1 12 t3 - t2 1

`整数 + “”`方式比Integer.toString()的方式快了10倍左右.

③ 自动装包/拆包

JDK自1.5(5.0)版本引入了自动拆装箱(Autoboxing/unboxing)的语法, 也就是在进行基本数据类型和对应的包装类转换时, 系统将自动进行,大大方便了代码的书写.

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

代码示例:

package com.dashidan.lesson13;/** * 大屎蛋教程网-dashidan.com * <p> * Java教程基础篇: 13. Java包装类 */public class Demo1 {    public static void main(String[] args) {        /** 将int类型转换为Integer类型*/        int intNum = 10;        Integer integer = new Integer(intNum);        /** 将Integer类型转换为int类型*/        int intValue = integer.intValue();        System.out.println(" intNum " + intNum + " intValue " + intValue);        /** 将字符串"666"按照十进制转换为int,则结果为666*/        int n0 = Integer.parseInt("666");        int n1 = Integer.parseInt("666", 10);        /** 将字符串"12"按照十六进制转换为int,则结果为18*/        int n2 = Integer.parseInt("12", 16);        /** 将字符串"FF"按照十六进制转换为int,则结果为255*/        int n3 = Integer.parseInt("FF", 16);        System.out.println("n0 : " + n0 + " n1: " + n1 + " n2: " + n2 + " n3: " + n3);        /** int类型会自动转换为Integer类型*/        int n = 12;        /** Integer类型会自动转换为int类型*/        Integer m = n;        if (m == n) {            System.out.println(m == n);        }    }}

输出:

 intNum 10 intValue 10n0 : 666 n1: 666 n2: 18 n3: 255true

④ 相关文章

Java集成开发环境

原创粉丝点击