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

作者:蓝桉cyq 时间:2023-12-03 22:04:13 

包装类

包装类其实就是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]
}

来源:https://blog.csdn.net/m0_71485750/article/details/127328969

标签:java,包装类,arrays类
0
投稿

猜你喜欢

  • Android远程服务编写和调用教程

    2022-06-14 18:10:45
  • ElasticSearch添加索引代码实例解析

    2023-11-21 03:41:04
  • C#遍历操作系统下所有驱动器的方法

    2022-06-29 09:12:14
  • java日期操作工具类(获取指定日期、日期转换、相隔天数)

    2023-11-28 06:42:53
  • java如何生成登录随机验证码

    2023-08-21 11:42:57
  • java编程题之顺时针打印矩阵

    2022-02-22 04:05:36
  • 详解ThreadLocal为什么会内存溢出原理

    2023-11-09 18:45:26
  • Android 8.0系统中通知栏的适配详解

    2022-03-03 07:38:20
  • c# ArrayList的使用方法小总结

    2023-04-13 17:16:22
  • Android无障碍监听通知的实战过程

    2022-01-25 16:37:18
  • SpringCloud Feign实现微服务之间相互请求问题

    2022-08-29 08:20:53
  • C#实现文件断点续传下载的方法

    2021-09-05 10:37:42
  • java 生成有序账号的实现方法

    2023-08-12 03:28:01
  • C# 弹出窗口show()和showdialog()的两种方式

    2022-05-08 17:12:36
  • Java实现登录和注册案例

    2022-02-27 04:57:46
  • Android Spinner 组件的应用实例

    2022-07-12 04:50:13
  • 生产消费者模式实现方式和线程安全问题代码示例

    2023-11-26 19:44:17
  • Dagger2 Android依赖注入学习笔记

    2021-11-27 17:15:54
  • Android开发之HttpClient异步请求数据的方法详解【附demo源码下载】

    2023-01-09 11:08:31
  • 深入理解Java设计模式之外观模式

    2023-05-02 09:48:00
  • asp之家 软件编程 m.aspxhome.com