Java 包装类和Arrays类(详细解释)

目录

包装类

作用介绍

包装类的特有功能

Arrays类

Arrays.fill() 

Arrays.toString() 

Arrays.sort()

升序排序

降序排序

Arrays.equals()

Arrays.copyOf()

Arrays.binarySearch()

包装类

作用介绍

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

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

为什么需要包装类?

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

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

自动装箱

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

public static void main(String[] args) {int num1 = 10;// 自动装箱(将int基本数据类变量赋值给包装类型变量)Integer a = num1;System.out.println(a);
}

自动拆箱

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

public static void main(String[] args) {Integer num2 = 100;// 自动拆箱(将包装类型变量赋值给基本类型变量)int b = num2;System.out.println(b);
}

包装类的特有功能

包装类的变量的默认值可以是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); // 1001System.out.println(result2 + 1); // 1011System.out.println(result3 + 2); // 1002
}

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

  • teger.parseInt(“字符串类型的整数”)
  • Double.parseDouble(“字符串类型的小数”)。
 String st1 = "123";String st2 = "12.123";int a = Integer.parseInt(st1);double b = Double.parseDouble(st2);System.out.println(a+1);//124System.out.println(b+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); // 124System.out.println(doubleNum + 1); // 13.123
}

Arrays类

Arrays.fill() 

给定特定值val,使整个数组中或者某下标范围内的元素值为val。

 int [] a = new int[10];int [] b = new int[8];Arrays.fill(a,3);Arrays.fill(b,3,7,6);for(int x : a)System.out.print(x+",");System.out.println();for(int x : b)System.out.print(x+",");

  

Arrays.toString() 

快速输出数组内容,但是输出带有 [ ]

int[] a = {1,2,3,4,5};
System.out.println(Arrays.toString(a));
// 输出格式:[1,2,3,4,5]

Arrays.sort()

升序排序

数组排序函数,默认升序

int[] a = new int[5]{5,4,3,2,1};
Arrays.sort(a); // 1 2 3 4 5
System.out.println(Arrays.toString(a));
// [1,2,3,4,5]

两种重载方式:

1.Arrays.sort (数组名)

2.Arrays.sort (数组名,起始坐标,排序长度)

对字符串排序时,和c+一样,是按照字典序排序

降序排序

要实现减序排序,可以对用 Collections.reverseOrder(),也可以包装类型数组

不包装

Arrays.sort(a, Collections.reverseOrder());

包装

 Integer[] a = {1,4,3,2,5,6,2,3,4};Arrays.sort(a,((o1, o2) -> o2 - o1));System.out.println(Arrays.toString(a));// [6, 5, 4, 4, 3, 3, 2, 2, 1]

Arrays.equals()

比较两数组内容是否相等

int[] a = {1,2,3};
int[] b = {1,2,3};
boolean isSame = Arrays.equals(a,b);
//true

注意:Arrays.equals()是比较数组内容,而a.equals(b) 这样的方法是比较地址值

特别注意:在Java中数组a==b比较的时两者的地址

以后使用java提供的引用数据内容(数组、字符串、各种集合....)时,一定要用equals()方法比较内容是否相等,而不是傻傻的用 ==了!因为官方已经把equals()给重写了。如果你要比较你自己写的类,例如学生按成绩排序,就要自己重写equals()方法

Arrays.copyOf()

两种方式:

1.B数组 = Arrays.copyOf(A数组,赋值长度)

 int [] a = new int[10];int [] b;Arrays.fill(a,10);b = Arrays.copyOf(a,11);//超过赋值长度赋值为0System.out.println(Arrays.toString(b));//[10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0]

2. B数组 = Arrays.copyOfRange(A数组 ,起始坐标,截取长度)

int [] a = new int[10];
int [] b;
Arrays.fill(a,10);
b = Arrays.copyOfRange(a,2,5);
System.out.println(Arrays.toString(b));
//[10, 10, 10]

Arrays.binarySearch()

在数组中查找指定值,若找到,则返回此值的下标,

若没找到,返回 -插入点-1(一定为负值);

int[] a = {1,5,6,7};
Arrays.binarySearch(a,2)  //没找到,插入点为1,则返回 -2
Arrays.binarySearch(a,4)  //没找到,插入点为1,则返回 -2
Arrays,binarySearch(a,8)  //没找到,插入点为4,则返回 -5
Arrays.binarySearch(a,5)  //找到了!返回下标 1
只要返回值 ≥ 0 ,就代表找到了。

推荐音乐:手写的从前

参考:Java基础Arrays类   Arrays常用方法(超详解)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/63651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C盘扩容遇到的问题(BitLocker解密、)

120G的C盘不知不觉的就满了,忍了好久终于要动手了。 尽管电脑-管理--磁盘管理里可以进行磁盘大小调整,但由于各盘都在用,不能够连续调整,所以选用DiskGenius。 # DiskGenius调整分区大小遇到“您选择的分区不支持无损调整容量” …

tcpdump

TCPDump是一个用于抓取网络数据包的命令行工具。它可以帮助网络管理员和开发人员分析网络流量、故障排除以及安全问题。下面是一些TCPDump的详细用法: 基本用法: 监听指定网络接口:tcpdump -i eth0通过IP地址过滤:tcpdump host 19…

常见的 HTML<meta> 标签的 name 属性及其作用

HTML中的 <meta> 标签可以通过 name 属性提供元数据&#xff0c;这些元数据可以用于指定有关文档的信息&#xff0c;以及控制浏览器和搜索引擎的行为。name 属性通常与其他属性一起使用&#xff0c;如 content、charset、http-equiv 等&#xff0c;以提供更具体的元数据信…

网络基础之重中之重

目录 IP协议 ​编辑 基本概念&#xff1a; 协议头格式&#xff1a; ​编辑 网段划分 DHCP &#xff1a; CIDR&#xff1a; 特殊的IP地址&#xff1a; IP地址的数量限制&#xff1a; 私有IP和公网IP 路由 路由的过程&#xff1a; 数据链路层 认识以太网&#x…

C# Dapper 操作Oracle数据库

nuget安装内容 1.配置连接字符串 OracleConnectionString这个可用 {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*","…

算法面试-深度学习基础面试题整理-AIGC相关(2023.9.01开始,持续更新...)

1、stable diffusion和GAN哪个好&#xff1f;为什么 &#xff1f; Stable diffusion是一种基于随机微分方程的生成方法&#xff0c;它通过逐步增加噪声来扰动原始图像&#xff0c;直到完全随机化。然后&#xff0c;它通过逐步减少噪声来恢复图像&#xff0c;同时使用一个神经网…

算法通关村——海量数据场景下的热门算法题的处理方法

1. 从40个亿中产生一个不存在的整数 题目要求&#xff1a;给定一个输入文件&#xff0c;包含40亿个非负整数&#xff0c;请设计一个算法&#xff0c;产生一个不存在该文件中的整数&#xff0c;假设你有1GB的内存来完成这项任务。 ● 进阶&#xff1a;如果只有10MB的内存可用&a…

【Python小工具】解决Python的Pyinstaller将.py文件打包成.exe可执行文件后文件过大的问题

文章目录 前言1. 创建新项目![请添加图片描述](https://img-blog.csdnimg.cn/36dcadc85d864a08b93af78b9e79ff6d.jpeg)2.删除原项目中的全部文件3.将要打包的文件放入该项目目录下4.创建虚拟环境5.设置解释器为虚拟环境中的python解释器6.查看是否成功使用虚拟环境中的python解…

【Spring Security】UserDetailsService 接口介绍

文章目录 UserDetailsService 介绍UserDetailsService 具体操作UserDetailsService 方法介绍 UserDetailsService 介绍 UserDetailsService 在 Spring Security 中主要承担查询系统内用户、验证密码、封装用户信息和角色权限。大白话就是你写一个实现类实现 UserDetailsServic…

mysql异常占用资源排查

通过执行日志与连接信息排查 查看是否开启日志记录 mysql> show global variables like %general%; --------------------------------- | Variable_name | Value | --------------------------------- | general_log | OFF | | general_log_file…

Citespace、vosviewer、R语言的文献计量学 、SCI

文献计量学是指用数学和统计学的方法&#xff0c;定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体&#xff0c;注重量化的综合性知识体系。特别是&#xff0c;信息可视化技术手段和方法的运用&#xff0c;可直观的展示主题的研究发展历程、研究现状、研究…

API接口接入电商平台案例,根据关键词获取拼多多商品列表示例

item_search-根据关键词取商品列表 公共参数 请求地址: 注册调用key 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_g…

uniapp 布局(自定义导航栏加固定高度的主要内容)

不想让整体页面出现滚动条 页面大致分为三部分&#xff0c;导航栏、主题内容、tabbar&#xff0c;不想让整个页面出现滚动条&#xff0c;只想让主要内容滚动。 我这里是直接用了uni.getSystemInfoSync()&#xff0c;整体分为两部分&#xff0c;自定义头部和滚动内容&#xff…

微信小程序echart导出图片

echarts版本5.1.0 用到的echarts组件是uni插件市场的echart组件 <div style"overflow: hidden;"><dCanvas class"uni-ec-canvass" id"uni-ec-canvas" ref"canvas" canvas-id"mychart-gauge" :ec"ec"&g…

SCOPE_IDENTITY什么意思

在关系型数据库中&#xff0c;SCOPE_IDENTITY()是一个用于获取最近插入的行的自增标识列值的函数。当向数据库表中插入一行数据时&#xff0c;如果表中的某列被配置为自增标识列&#xff08;通常是主键列&#xff09;&#xff0c;数据库会自动为每个插入的行分配一个唯一的值&a…

react17:生命周期函数

挂载时更新时 setState触发更新、父组件重新渲染时触发更新forceUpdate触发更新卸载时 react&#xff08;v17.0.2&#xff09;的生命周期图谱如下。 相较于16版本&#xff0c;17版本生命周期函数有如下变化&#xff1a; componentWillMount() componentWillUpdate() compone…

10.Redis 渐进式遍历

Redis 渐进式遍历 渐进式遍历scan 渐进式遍历 keys 命令一次性的把整个redis中所有的key都获取到&#xff0c;keys *但这个操作比较危险&#xff0c;可能会一下子得到太多的key,阻塞 redis 服务器。 通过渐进式遍历&#xff0c;就可以做到&#xff0c;既可以获取到所有的 key&…

认识SQL sever

目录 一、数据库的概念 1.1数据库的基本概念 1.2对数据库的了解 二、数据库的分类 2.1关系型数据库&#xff08;RDBMS&#xff09;&#xff1a; 2.2非关系型数据库&#xff08;NoSQL&#xff09;&#xff1a; 2.3混合数据库&#xff1a; 2.4数据仓库&#xff1a; 2.5嵌…

修改git文件

修改本地库的文件&#xff0c;体验git版本与版本穿梭 初始化git目录 git init 1.1、创建一个文件&#xff0c;并提交到本地本地库 echo "123" > hello.txt # 创建文件 git add hello.txt # 加入到暂存区 git commit -m "first commit" hello.txt #…

计算机毕设 基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python

文章目录 1 前言1 课题背景2 GAN(生成对抗网络)2.1 简介2.2 基本原理 3 DeOldify 框架4 First Order Motion Model5 最后 1 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要…