亲宝软件园·资讯

展开

Java中包装类和Arrays类的详细介绍

蓝桉cyq 人气:0

包装类

包装类其实就是8种基本数据类型对应的引用类型。

基本数据类型引用数据类型
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean

为什么需要包装类?

Java为了实现一切皆对象,为8种基本类型提供了对应的引用类型。

后面的集合和泛型其实也只能支持包装类型,不支持基本数据类型。

自动装箱:

基本类型的数据和变量可以直接赋值给包装类型的变量。

public static void main(String[] args) {
    int num1 = 10;

    // 自动装箱(将int基本数据类变量赋值给包装类型变量)
    Integer res1 = num1;
    System.out.println(res1);
}

自动拆箱:

包装类型的变量可以直接赋值给基本数据类型的变量。

public static void main(String[] args) {
    Integer num2 = 100;

    // 自动拆箱(将包装类型变量赋值给基本类型变量)
    int res2 = num2;
    System.out.println(res2);
}

包装类的特有功能:

包装类的变量的默认值可以是null,容错率更高, 而基本类型不可以。

public static void main(String[] args) {
    Integer num3 = null;
}

可以把基本类型的数据转换成字符串类型(用处不大)

  • 调用toString()方法得到字符串结果。
  • 或者调用Integer.toString(基本类型的数据)。
public static void main(String[] args) {
    Integer number = 100;
    // 方式一
    String result1 = number.toString();
  	// 方式二
  	String result2 = Integer.toString(101);
    // 方式三: 最简单常用
    String result3 = number + "";
  
    System.out.println(result1 + 1); // 1001
    System.out.println(result2 + 1); // 1011
    System.out.println(result3 + 2); // 1002
}

可以把字符串类型的数值转换成真实的数据类型(非常有用)

  • teger.parseInt(“字符串类型的整数”)
  • Double.parseDouble(“字符串类型的小数”)。
public static void main(String[] args) {
    String strNum1 = "123";
    String strNum2 = "12.123";

    // 字符串转整数
    int intNum = Integer.parseInt(strNum1);
    // 字符串转小数
    double doubleNum = Double.parseDouble(strNum2);

    System.out.println(intNum + 1); // 124
    System.out.println(doubleNum + 1); // 13.123
}

将字符串类型的数字转为真实的数据, 我们也可以调用包装类的valueOf方法

public static void main(String[] args) {
    String strNum1 = "123";
    String strNum2 = "12.123";

    // 字符串转整数
    int intNum = Integer.valueOf(strNum1);
    // 字符串转小数
    double doubleNum = Double.valueOf(strNum2);

    System.out.println(intNum + 1); // 124
    System.out.println(doubleNum + 1); // 13.123
}

小结:

包装类是什么,作用是什么?

基本数据类型对应的引用类型,实现了一切皆对象。

后期集合和泛型不支持基本类型,只能使用包装类。

包装类有哪些特殊功能?

可以把基本类型的数据转换成字符串类型(用处不大)

可以把字符串类型的数值转换成真实的数据类型(非常有用)

Arrays类

Arrays类的概述

数组操作工具类,专门用于操作数组元素的。

Arrays类的常用API

方法名说明
toString(类型[] a)返回数组的内容(字符串形式)
sort(类型[] a)对优质的数组默认进行升序排序
sort(类型[] a, Comparator<? super T> c)使用比较器对象自定义排序
binarySearch(int[] a, int key)二分搜索数组中的数据,存在返回索引,不存在返回-1

toString方法

public static void main(String[] args) {
    int[] arr = {10, 20, 30, 40, 0, 100};

    // 返回数组内容
    String res = Arrays.toString(arr);
    System.out.println(res); // [10, 20, 30, 40, 0, 100]
}

sort方法

public static void main(String[] args) {
    int[] arr = {20, 10, 900, 40, 0, 100};

    // 升序排序
    Arrays.sort(arr);
    System.out.println(Arrays.toString(arr)); // [0, 10, 20, 40, 100, 900]
}

binarySearch方法, 二分查找法搜索数组中的数据, 找到返回索引, 找不到返回-1

注意: 前提被查找的数组必须是排好序的

public static void main(String[] args) {
    int[] arr = {20, 10, 900, 40, 0, 100};
  
    // 升序排序
    Arrays.sort(arr);
    // 查找数组
    int index = Arrays.binarySearch(arr, 10);
    System.out.println(index); // 1
}

sort方法自定义规则:

sort方法第二个参数是Comparator, 设置Comparator接口对应的比较器对象,可以来自己定制比较规则。

注意: 自定义比较器对象只支持引用型类型的排序

如果认为左边数据大于右边数据, 返回正整数

如果认为左边数据小于右边数据, 返回负整数

如果认为左边数据等于右边数据, 返回0

默认的升序是o1 - o2; 降序是o2 - o1

public static void main(String[] args) {
    // 只支持引用类型, 因此定义包装类数据类型 
    Integer[] arr = {10, 0, 30, 50, 100, 67};

    // 调用sort方法, 降序
    Arrays.sort(arr, new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    });

    System.out.println(Arrays.toString(arr)); // [100, 67, 50, 30, 10, 0]
}

总结

加载全部内容

相关教程
猜你喜欢
用户评论