包装类

Java中的包装类

Java它是一种面向对象的语言,Java中的类把方法和数据连接到一起,构成了自包含式的处理单元。但是Java中不能定义基本类型对象,为了能够将基本类型当做对象来处理,Java为每种基本类型都提供了包装类,如int型的包装类Integer,boolean型的包装类Boolean,这样就可以将这些基本类型转换为对象,并且能调用一些方法了。从基本类型转换为对应的包装类,叫做装箱。从包装类转换为对应的基本类型,叫做拆箱

1、所有的包装类

基本类型及对应的包装类如下表:
在这里插入图片描述
以图结构来说明:
在这里插入图片描述
数字类型的包装类继承自Number类,Number类、Boolean类、Character类都是继承自Object类。

2、Integer类

Integer类是int基本型对应的包装类,该类在对象中包装了一个int的值。Integer类是Number类型的子类。api文档中说明如下:
在这里插入图片描述
提供的常量如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

构造方法如下:
在这里插入图片描述
提供的方法如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
常用的方法说明如下:

  • byteValue():以byte类型返回该Integer值。
  • compareTo(Integer res):与另一个Integer类型对比,相等返回0,大于返回1,小于返回-1。
  • equals(Object obj):比较是否相等,返回布尔值。
  • intValue():以int型返回此Integer对象,即拆箱。
  • shortValue():以short型返回此Integer对象。
  • toString():返回一个表示此Integer值的String对象。
  • valueOf(String str):将String字符串转换为Integer类型返回,即装箱。如果str不是纯数字的,会报错。
  • parseInt(String str):返回与str中的数字等价的int值,str要为纯数字。
  • parseInt(String str,int radix):将radix进制的字符串以十进制的int返回。
  • toBinaryString(int i):返回i的二进制字符串表示。
  • toDctalString(int i):返回i的八进制字符串表示。
  • toHexString(int i):返回i的十六进制字符串表示。

以下代码进行说明:

    public static void main(String[] args) {
        int age = 25;
        String height = "183";
        // 构造方法的参数接受int型和纯数字的String类型
        Integer obj = new Integer(age);
        System.out.println(obj);
        Integer obj2 = new Integer(height);
        System.out.println(obj2);
        // 测试4个常量属性
        System.out.println("int存储的最大值是:" + Integer.MAX_VALUE);
        System.out.println("int存储的最小值是:" + Integer.MIN_VALUE);
        System.out.println("int类型的字节数是:" + Integer.SIZE + "字节");
        System.out.println("int类型的比特数是:" + Integer.BYTES + "比特");
        System.out.println(obj.compareTo(25));
        System.out.println(obj.compareTo(24));
        System.out.println(obj.compareTo(26));
        // intValue拆箱
        int num = obj.intValue();
        System.out.println(num);
        // valueOf装箱,返回一个Integer类型
        Integer obj3 = Integer.valueOf(num);
        System.out.println("obj3=" + obj3);
        System.out.println("二进制1011对应的十进制为:" + Integer.valueOf("1011", 2));
        System.out.println("八进制1011对应的十进制为:" + Integer.valueOf("1011", 8));
        System.out.println("十六进制1011对应的十进制为:" + Integer.valueOf("1011", 16));
        // parseInt返回一个int型
        int num2 = Integer.parseInt("20");
        System.out.println("num2=" + num2);
        System.out.println("二进制1011对应的十进制为:" + Integer.parseInt("1011", 2));
        System.out.println("八进制1011对应的十进制为:" + Integer.parseInt("1011", 8));
        System.out.println("十六进制1011对应的十进制为:" + Integer.parseInt("1011", 16));
        // 返回数值的进制字符串
        String str_2 = Integer.toBinaryString(16);
        String str_8 = Integer.toOctalString(16);
        String str_16 = Integer.toHexString(16);
        System.out.println("16的二进制为:" + str_2);
        System.out.println("16的八进制为:" + str_8);
        System.out.println("16的十六进制为:" + str_16);
        //简单的求最大值、最小值、求和方法
        System.out.println("最大值为:" + Integer.max(25, 20));
        System.out.println("最小值为:" + Integer.min(25, 20));
        System.out.println("和值为:" + Integer.sum(25, 20));
    }

执行,控制台:
在这里插入图片描述
其他的数值包装类型:Byte、Short、Long、Float、Double参考Integer类型,基本相同。

3、Character类型

Character类在对象中包含了一个char基本型的值。api说明如下:
在这里插入图片描述
构造方法是唯一的:
在这里插入图片描述
提供的方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
常用几种方法的说明:

  • charValue():返回此Character对象的char值。
  • compareTo(Character c):比较在字母表中的顺序,相同返回0。在前面返回-1,后面返回1。
  • equals(Object obj):比较是否相等。
  • toUpperCase(Char ch):将字符转为大写。
  • toLowerCase(Char ch):将字符转为小写。
  • toString():返回char型的字符串值。
  • charValue():返回此Character的char值。
  • isUpperCase(char ch):判断字符是否为大写。
  • isLowerCase(char ch):判断字符是否为小写。

以下通过一个例子来说明:

给定一个数组,统计数组中字母、大写字母、小写字母、数字、空格的数量。

    public static void main(String[] args) {
        char[] chs = {'a', 'C', '8', '0', '6', 'D', ' ', 'F', ' ', 'y', '5', 'p', ' ', 'T', '*', '(' };
        countNum(chs);
    }

    // 定义一个方法,统计字母、大写字母、小写字母、数字、空格的个数
    private static void countNum(char[] chs) {
        // 计数器
        int letter = 0, upLetter = 0, lowLetter = 0, digit = 0, whiteSpace = 0, others = 0;
        for (int i = 0; i < chs.length; i++) {
            // 统计字母
            if (Character.isLetter(chs[i])) {
                letter++;
                // 确定是字母后进一步确定大小写
                if (Character.isUpperCase(chs[i])) {// 统计大写字母
                    upLetter++;
                }
                if (Character.isLowerCase(chs[i])) {// 统计小写字母
                    lowLetter++;
                }
            } else if (Character.isDigit(chs[i])) {// 统计数字
                digit++;
            } else if (Character.isWhitespace(chs[i])) {// 统计空格
                whiteSpace++;
            } else {// 其他
                others++;
            }
        }
        System.out.println("该数组的长度为:" + chs.length);
        System.out.println("字母一共有:" + letter + "个");
        System.out.println("大写字母一共有:" + upLetter + "个");
        System.out.println("小写字母一共有:" + lowLetter + "个");
        System.out.println("数字一共有:" + digit + "个");
        System.out.println("空格一共有:" + whiteSpace + "个");
        System.out.println("其他类型字符一共有:" + others + "个");
    }

控制台:
在这里插入图片描述

给定一个数组,数组中只有大小写字母,将大写字母转为小写,小写字母转为大写。

    public static void main(String[] args) {
        char[] chs = {'I', 'a', 'm', 'a', 'C', 'h', 'i', 'n', 'e', 's', 'e' };
        System.out.println("转换前的内容如下:");
        for (int i = 0; i < chs.length; i++) {
            System.out.print(chs[i] + "\t");
        }
        System.out.println();
        char[] res = transfer(chs);
        System.out.println("转换后的内容如下:");
        for (int i = 0; i < res.length; i++) {
            System.out.print(res[i] + "\t");
        }
    }

    // 定义一个方法,进行大小写转换
    private static char[] transfer(char[] chs) {
        for (int i = 0; i < chs.length; i++) {
            if (Character.isUpperCase(chs[i])) {
                chs[i] = Character.toLowerCase(chs[i]);
            } else if (Character.isLowerCase(chs[i])) {
                chs[i] = Character.toUpperCase(chs[i]);
            }
        }
        return chs;
    }

执行,控制台:
在这里插入图片描述
其他的一些东西:

    public static void main(String[] args) {
        char ch = '鄢';
        Character obj = new Character(ch);
        Character obj2 = Character.valueOf(ch);
        System.out.println("obj=" + obj);
        System.out.println("obj2=" + obj2);
        char res = obj.charValue();
        System.out.println("res=" + res);
        System.out.println("是否为Unicode字符?" + Character.isDefined(res));
        System.out.println("对应的ASCII值为:" + (int) res);
        Character obj3 = new Character('F');
        System.out.println(obj3.compareTo('F'));
        System.out.println(obj3.compareTo('E'));
        System.out.println(obj3.compareTo('G'));
        System.out.println(obj3.toString());
    }

控制台:
在这里插入图片描述
4、Number类型

Number类是一个抽象类,是数值类型包装类的直接父类。api文档说明如下:
在这里插入图片描述
在这里插入图片描述
以上的方法都是抽象方法,相应的子类中其实都重写了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值