Java中的包装类

1、包装类的概述

(1)Java语言是面向对象的,但是Java中的基本数据类型却不是面向对象的,这在实际开发中存在很多的不便。为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类,称为包装类;

(2)包装类均为Java.lang包中,包装类和基本数据类型的对应关系如下图所示所示:  

 (3)包装类的用途主要有两个:

        1)包装类作为和基本数据类型对应的类存在,方便对象的操作;

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

2、包装类和基本数据类型的转换

(1)基本数据类型转换为包装类

        在Java中,基于基本数据类型数据创建包装类对象通常可以采用如下两种方式。

                1)使用包装类的构造方法

                        public Type(type value)

                        public Type(String value)

                        其中,Type表示包装类,参数type为基本数据类型;

                        不能使用第二种构造方法创建Character类的包装类对象,只能是Character charValue = new Character('x')这种形式

                2)使用包装类的valueOf()方法

                        a)包装类中一般包含静态的重载的valueOf()方法,它可以接收基本数据类型数据和字符串作为参数并返回包装类的对象;

                        b)以Integer包装类为例,valueOf()方法的定义如下所示:

                                Integer valueof (int i):返回一个表示指定的int值的Integer对象;

                                Integer value (String s):返回保存自定的String值的Integer对象;

                                Integer value (String s,int radix):返回一个Integer对象,该对象保存了用第二个参数提供的基数(二进制、十进制等)进行解析时从指定的String中提取的值。

                        c)Character类的valueOf()方法只有一个版本的定义,即valueOf(char c),它返回一个表示指定char值的Character对象;

(2)包装类转换成基本数据类型

        包装类转换成基本数据类型通常采用如下的方法:public type typeValue();

        其中,type指的是基本数据类型,如byteValue()、charValue()等,相应的返回值为byte、char。

(3)基本类型和包装类的自动转换

        1)在Java SE 5.0版本之后程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成。

        Integer intObject = 5; //装箱:基本数据类型转换为包装类

        int intValue = intObject; //拆箱:包装类转换为基本数据类型

        2)虽然Java平台提供了基本数据类型和包装类的自动转换功能。程序员在程序中也不能只使用对象,而抛弃了基本数据类型。

        3)包装对象只有在基本数据类型需要用对象表示时才使用,包装类并不是用来取代基本数据类型的。

实现包装类的代码如下:

public class Test {

    public static void main(String[] args) {

        //所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例
        byte num1 = 12;
        Byte byte1 = new Byte(num1);

        short num2 = 20;
        Short short1 = new Short(num2);

        int num3 =30;
        Integer integer1 = new Integer(num3);

        long num4 = 40L;
        Long long1 = new Long(num4);

        float num5 = 50.5F;
        Float float1 = new Float(num5);

        double num6 = 66.66;
        Double double1 = new Double(num6);

        boolean num7 = true;
        Boolean boolean1 = new Boolean(num7);

        char num8 = '好';
        Character character1 = new Character(num8);


        //除Character类外,其他包装类可将一个字符串作为参数构造它们的实例
        Byte byte2 = new Byte("12");
        System.out.println(byte2);
        //给NUmber类型的对象传递字符串的时候,这个字符串是要能解析成数字的字符串,否则会报NumberFormatException异常(数字格式化异常)

        Short short2 = new Short("123");
        Integer integer2 = new Integer("1234");
        Long long2 = new Long("3306");
        Float float2 = new Float("23.5");
        Double double2 = new Double("55.55");
        //Boolean包装类的参数为字符串的时候,字符串的内容只要是true(不管大写还是小写),都输出true,其它情况都是false
        Boolean boolean2 = new Boolean("true");
        System.out.println("boolean2:"+boolean2);//true
        Boolean boolean3 = new Boolean("True");
        System.out.println("boolean3:"+boolean3);//true
        Boolean boolean4 = new Boolean("qwe");
        System.out.println("boolean4:"+boolean4);//false

        //字符包装了构造方法的参数不能为字符串
        //Character character2 = new Character("q");
    }
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值