Java中包装类和Arrays类的详细介绍
作者:蓝桉cyq 发布时间:2023-12-03 22:04:13
包装类
包装类其实就是8种基本数据类型对应的引用类型。
基本数据类型 | 引用数据类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
为什么需要包装类?
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


猜你喜欢
- Feign传递请求头信息在我之前的文章服务网关Spring Cloud Zuul中,将用户的登录id放在了请求头中传递给内部服务。但是当内部
- 一、项目搭建1、可以在新建项目的使用Spring MVC框架。或者创建一个简单的项目之后再用Add Framework Support来添加
- Android setButtonDrawable()的兼容问题解决办法setButtonDrawable()的兼容问题API1
- Android 获取IP地址最近做项目,有一个需求是Android设备获取当前IP的功能,经过一番查询资料解决了,记录下实现方法。1.使用W
- 本文实例讲述了C#实现下载网页HTML源码的方法。分享给大家供大家参考之用。具体方法如下:public static class DownL
- 在Java 8之前,对集合进行排序需要为排序中使用的比较器 Comparator 创建一个匿名内部类:new Compa
- 一、本文来由由于网络不稳定的原因,所以想着启动本地nacos来运行项目,但是nacos启动没问题了,但是依旧报错。Caused by: co
- 有这样一个有关汽车的类。public class Car {  
- 1.DRUID连接池介绍Druid是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。在功能、性能、扩展性方面
- 基于比较的排序算法基本原理及Java实现1. 七大基于比较的排序-总览1.1常见基于比较的排序分类1.2时间复杂度,空间复杂度以及稳定性。稳
- 注意:导包的时候API 11之前: android.text.ClipboardManagerAPI 11之后: android.conte
- 将自然语言编写的测试用例转换为可执行的测试,可以大大降低需求与开发之间的沟通成本,这是BDD(行为驱动开发)希望达到的效果。SpecFlow
- 过年微信红包很火,最近有个项目也要做抢红包,于是写了个红包的生成算法。红包生成算法的需求预先生成所有的红包还是一个请求随机生成一个红包简单来
- 有时候我们需要在一个ArrayList的for循环中动态删除元素的需求, 废话不多说看代码List<Integer> list
- 本人一直喜欢左手使用鼠标,但有时候同事会临时进行操作,还得在控制面板里进行更改,比较不便,何不编写一个控制台程序,双击一下即可切换左右键 代
- 前言在平时的项目开发中,mybatis应用非常广泛,但一般都是直接CRUD类型sql的执行。本片博客主要说明一个另类的操作,注入sql,并使
- 一、导包本文的敏感词过滤器用在SpringBoot项目中,因此,首先需要在pom.xml文件中导入如下依赖<dependency>
- Jakarta commons fileupload组件可以处理HTTP请求及响应,很多时候被用来处理文件上传,但是近期发现,当我们自定义文
- 写项目时,要求仿微信朋友圈,双击顶栏置顶,于是封装了双击回调接口,方便大家拿来就用/** * Created by Administrato
- 什么是Pub-Sub发布订阅是一种设计模式,它允许应用程序组件之间进行松散耦合。其实订阅发布设计中主要是发布者生成事件通道,用于在不了解任何