当前位置: 首页 > news >正文

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常用方法(超详解)

相关文章:

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

目录 包装类 作用介绍 包装类的特有功能 Arrays类 Arrays.fill() Arrays.toString() Arrays.sort() 升序排序 降序排序 Arrays.equals() Arrays.copyOf() Arrays.binarySearch() 包装类 作用介绍 包装类其实就是8种基本数据类型对应的引用类型。 基本数据类型引用…...

elementUi中的el-table表格的内容根据后端返回的数据用不同的颜色展示

效果图如下&#xff1a; 首先 首先&#xff1a;需要在表格行加入 <template slot-scope"{ row }"> </template>标签 <el-table-column prop"usable" align"center" label"状态" width"180" ><templ…...

在访问一个网页时弹出的浏览器窗口,如何用selenium 网页自动化解决?

相信大家在使用selenium做网页自动化时&#xff0c;会遇到如下这样的一个场景&#xff1a; 在你使用get访问某一个网址时&#xff0c;会在页面中弹出如上图所示的弹出框。 首先想到是利用Alert类来处理它。 然而&#xff0c;很不幸&#xff0c;Alert类处理的结果就是没有结果…...

python 基于http方式与基于redis方式传输摄像头图片数据的实现和对比

目录 0. 需求1. 基于http方式传递图片数据1.1 发送图片数据1.2 接收图片数据并可视化1.3 测试 2. 基于redis方式传递图片数据2.1 发送图片数据2.2 接收图片数据并可视化2.3 测试 3. 对比 0. 需求 在不同进程或者不同语言间传递摄像头图片数据&#xff0c;比如从java实现的代码…...

快速使用Git完整开发

本系列有两篇文章&#xff1a; 一是本篇&#xff0c;主要说明了关于Git工具的基础使用&#xff0c;包含三板斧&#xff08;git add、git commit、git push&#xff09;、Git基本配置、版本回退、分支管理、公钥与私钥、远端仓库和远端分支、忽略文件、命令别名、标签等内容。二…...

鲁棒优化入门(7)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(下)

0.引言 上一篇博客介绍了使用Yalmip工具箱求解单阶段鲁棒优化的方法。这篇文章将和大家一起继续研究如何使用Yalmip工具箱求解两阶段鲁棒优化(默认看到这篇博客时已经有一定的基础了&#xff0c;如果没有可以看看我专栏里的其他文章)。关于两阶段鲁棒优化与列与约束生成算法的原…...

Docker技术--Docker中的网络问题

1.docker中的网络通信 如果想要弄清楚docker中的网络通信问题,其实需要弄清楚这几个问题就可以:容器与容器之间的通信、容器与外部网络之间的通信、外部网络与容器之间的通信。 -a:容器与容器之间的通信,如下所示: 在默认情况下,docker使用网桥(Bridge模式)与NAT通信。这…...

ASP.NET Core 中的两种 Web API

ASP.NET Core 有两种创建 RESTful Web API 的方式&#xff1a; 基于 Controller&#xff0c;使用完整的基于ControllerBase的基类定义接口endpoints。基于 Minimal APIs&#xff0c;使用Lambda表达式定义接口 endpoints。 基于 Controller 的 Web API 可以使用构造函数注入&a…...

【线程池】如何判断线程池中的任务执行完毕(三)

目录 前言 1. isTerminated()方法 2. awaitTermination()方法 3.getTaskCount()方法和executor.getCompletedTaskCount()方法结合使用 4.使用CountDownlatch类 前言 通常我们使用线程池的时候&#xff0c;系统处于运行的状态&#xff0c;而线程池本身就是主要为了线程复用&…...

Qt/C++编写视频监控系统81-Onvif报警抓图和录像并回放

一、前言 视频监控系统中的图文警情模块&#xff0c;是通过Onvif协议的事件订阅拿到的&#xff0c;通过事件订阅后&#xff0c;设备的各种报警事件比如入侵报警/遮挡报警/越界报警/开关量报警等&#xff0c;触发后都会主动往订阅者发送&#xff0c;而且一般都是会发送两次&…...

浅谈安防视频监控平台EasyCVR视频汇聚平台对于夏季可视化智能溺水安全告警平台的重要性

每年夏天都是溺水事故高发的时期&#xff0c;许多未成年人喜欢在有水源的地方嬉戏&#xff0c;这导致了悲剧的发生。常见的溺水事故发生地包括水库、水坑、池塘、河流、溪边和海边等场所。 为了加强溺水风险的提示和预警&#xff0c;完善各类安全防护设施&#xff0c;并及时发现…...

基于单片机的串行通信发射机设计

一、项目介绍 串行通信是一种常见的数据传输方式&#xff0c;允许将数据以比特流的形式在发送端和接收端之间传输。当前实现基于STC89C52单片机的串行通信发射机&#xff0c;通过红外发射管和接收头实现自定义协议的数据无线传输。 二、系统设计 2.1 单片机选择 在本设计中&…...

MySQL数据库——多表查询(3)-自连接、联合查询、子查询

目录 自连接 查询语法 自连接演示 联合查询 查询语法 子查询 介绍 标量子查询 列子查询 行子查询 表子查询 自连接 通过前面的学习&#xff0c;我们对于连接已经有了一定的理解。而自连接&#xff0c;通俗地去理解就是自己连接自己&#xff0c;即一张表查询多次。…...

day53 动规.p14 子序列

- 1143.最长公共子序列 cpp class Solution { public: int longestCommonSubsequence(string text1, string text2) { vector<vector<int>> dp(text1.size() 1, vector<int>(text2.size() 1, 0)); for (int i 1; i < text1.size(…...

将docker打包成镜像并保存到本地

如果想重装系统&#xff0c;又不想破坏docker里面配好的环境&#xff0c;那么可以将docker镜像打包到本地进行保存。 1. 将docker打包成镜像 命令&#xff1a;docker commit 容器id 镜像名:tag 使用docker ps -a即可查看容器相关信息 docker commit dd25c7c6bf17 zm_cu101:c…...

Harmony数据存储工具类

使用的是mmkv 1、安装mmkv ohpm install @ohos/mmkv2、封装 import{MMKV, SerializeBase} from @ohos/mmkv/*** 数据存储工具类*/ class MMKVUtil{private filePath:string = private cachePath:string = private mmkv:MMKVprivate mmapID:string="MMKV"construct…...

ROS 2官方文档(基于humble版本)学习笔记(一)

ROS 2官方文档&#xff08;基于humble版本&#xff09;学习笔记&#xff08;一&#xff09; 一、安装ROS 2二、按教程学习1.CLI 工具配置环境使用turtlesim&#xff0c;ros2和rqt安装 turtlesim启动 turtlesim使用 turtlesim安装 rqt使用 rqt重映射关闭turtlesim 由于市面上专门…...

【数据结构】十字链表的画法

十字链表的基本概念 有向边又称为弧 假设顶点 v 指向 w&#xff0c;那么 w 称为弧头&#xff0c;v 称为弧尾 顶点节点采用顺序存储 顶点节点 data&#xff1a;存放顶点的信息firstin&#xff1a;指向以该节点为终点&#xff08;弧头&#xff09;的弧节点firstout&#xff1…...

使用rabbitmq进行支付之后的消息通知

订单服务完成支付后将支付结果发给每一个与订单服务对接的微服务&#xff0c;订单服务将消息发给交换机&#xff0c;由交换机广播消息&#xff0c;每个订阅消息的微服务都可以接收到支付结果. 微服务收到支付结果根据订单的类型去更新自己的业务数据。 相关技术方案 使用消息…...

【100天精通python】Day47:python网络编程_Web开发:web服务器,前端基础以及静态服务器

目录 1 网络编程与web编程 1.1 网络编程 1.2 web编程 1.3 前后端交互的基本原理 2 Web开发基础 2.1 HTTP协议 2.2 Web服务器 2.3 前端基础 2.3.1 HTML&#xff08;超文本标记语言&#xff09; 2. 3.2 CSS&#xff08;层叠样式表&#xff09; 2.3.3 JavaScript 2.…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...