JavaSEDemo04工具类Arrays

简介

  • 本文是2021/03/23晚上整理的笔记
  • 赘述可能有点多,还请各位朋友耐心阅读
  • 本文中Arrays工具类的方法的格式都是参照JDK API 1.8编写的
  • 本人的内容和答案不一定是最好最正确的,欢迎各位朋友评论区指正改进

Arrays工具类常用的方法

Arrays工具类的介绍

Arrays工具类是数组工具类,位于java.util包下
使用前记得导包,如果使用的编译器有自动导包功能则可以忽略。

toString

  • toString方法有多种重载形式,参数分别是不同数据类型的数组,本文仅以int[ ]数组来说明
  • static String toString(int[ ] a)
  • 将参数数组的内容以字符串形式返回。
  • 代码示例:
int [] array = {7,5,6,1,3};
System.out.println(Arrays.toString(array));

程序运行结果

[7,5,6,1,3]

fill两种重载形式

  • 向数组中填充内容
  • fill根据不同数据类型的数组有不同的重载形式,本文仅以int[ ]数组来说明
  • (1)static void fill(int[] a, int val) :赋予参数数组每一个元素参数val的值
    例如
int [] array = new int[5];
Arrays.fill(array,5);
System.out.println(Arrays.toString(array));

程序运行结果

[5,5,5,5,5]
  • (2)static void fill(int[ ] a,int fromIndex,int toIndex,int val)
  • 赋予参数数组指定范围内的元素 一定的值
  • 范围从fromIndex开始,到toIndex前一个结束,范围取值是左闭右开区间:[fromIndex,toIndex)
  • 代码示例:
int [] array = new int [5];
//注意左闭右开区间,范围实际到的是1到2,也就是数组第2个元素到第3个元素
Arrays.fill(array,1,3,5); 
System.out.println(Arrays.toString(array));

程序运行结果

[0,5,5,0,0]

sort两种重载形式

  • 对数组进行正序排序
  • sort根据不同数据类型的数组有不同的重载形式,本文仅以int[ ]数组来说明
  • (1)static void sort(int[ ] a):将参数数组按正序(从小到大)排序好
    代码示例:
int [] array = {7,8,6,5,4};
Arrays.sort(array);
//打印输出数组
System.out.println(Arrays.toString(array));

程序运行结果

[4,5,6,7,8]
  • (2)static void sort(int[ ] a,int fromIndex,int toIndex)
  • 将参数数组在一定范围内按正序(从小到大)排好,这个范围是左闭右开区间,[fromIndex,toIndex)
    代码示例:
int [] array = {7,8,5,4,3};
//注意左闭右开区间,范围实际到的是1到2,也就是数组第2个元素到第3个元素
Arrays.sort(array,1,3); 
System.out.println(Arrays.toString(array));

程序运行结果

[7,5,8,4,3]

equals

  • 比较两个数组的内容是否相同
  • equals根据不同数据类型的数组有不同的重载形式,本文仅以int[ ]数组来说明
  • static boolean equals(int[ ] a1,int [ ]a2 ):比较两个参数数组的内容是否相同,如果相同,返回true;如果不同,返回false
  • 代码示例:
int [] arr1 = {1,2,3,4,5};
int [] arr2 = {1,2,3,4,5};
System.out.println(Arrays.equals(arr1,arr2));

程序运行结果

true

binarySearch两种重载形式

  • 二分查找法
  • 注意1:使用该方法的数组必须是一个正序数组,否则会出错
  • 注意2:如果方法在数组中找不到参数的值,则会从-1开始对数组进行查找,最终返回一个参数可能存在的位置,注意这个返回的值是一个负数。
  • (1)static int binarySearch(int[ ] a,int key):在参数数组中,找到key所在的索引值
  • 代码示例:
int [] arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr,30));
//由于数组中没有35,binarySearch方法将数组看成是索引-1开始-5结束的数组
//35可能存在的位置是30和40之间,返回一个大概值。结果为-4
System.out.println(Arrays.binarySearch(arr,35));

程序运行结果

2
-4
  • (2)static int binarySearch(int[ ] a,int fromIndex,int toIndex,int key)
  • 在数组的指定范围中查找key的值,返回索引。范围是左闭右开区间,[fromIndex,toIndex)
  • 如果找不到key的值,就会返回负数
  • 代码示例:
int [] arr = {10,20,30,40,50};
//从索引1开始到索引2结束,也就是第2个数组元素到第3个数组元素
System.out.println(Arrays.binarySearch(arr,1,3,30));
//由于数组中没有35,binarySearch方法将数组看成是索引-1开始-5结束的数组
//35可能存在的位置是30和40之间,返回一个大概值。结果为-4
System.out.println(Arrays.binarySearch(arr,1,3,35));
2
-4

copyOf和copyOfRange

  • 截取原数组,复制到新数组
  • (1)static int[ ] copyOf(int[ ]original,int newLength)
  • 截取原数组int[ ] original ,根据参数长度newLength截取,复制到新数组
  • 代码示例:
int [] array = {10,20,30,40,50};
int [] array2 = Arrays.copyOf(array,3);
System.out.println(Arrays.toString(array2));

程序运行结果

[10,20,30]
  • (2) static int[ ] copyOfRange(int[ ] original,int from,int to)
  • 截取原数组一定范围,复制到新数组。范围是左闭右开区间[from,to)
  • 代码示例:
int [] array = {10,20,30,40,50};
int [] array2 = Arrays.copyOfRange(array,2,4);
System.out.println(Arrays.toString(array2));

程序运行结果

[30,40]

拓展:自定义一个equals方法,达成和Arrays.equals方法一样的效果

  public boolean equals(int [] array1,int [ ]array2){
                 //判断两个数组的地址值
                 if(array1 == array2){
                 return  true;
                 }
                 //判断两个数组是否为空
                 if(array1==null || array2==null){
                     return false;
                 }
                 //判断两个数组的长度是否相等
                 int length = array1.length;
                 if(array2.length!=length){
                     return false;
                 }
                 //从第0号元素一直到最后一个,挨个比较两个数组的元素是否相等
        for (int i = 0; i < array1.length; i++) {
                if(array1[i] !=array2[i]){
                    return false;
                }
        }
               return true;
    }

IDEA常用快捷键

  • psvm 快速生成main方法 psvm是public static void main的缩写
  • sout 快速生成打印语句,System.out.println
  • soutv 可以快速生成打印语句以及字符串
  • Alt + 回车 对代码问题给出几种解决方案
  • Alt + insert 快速生成构造方法 Getter Setter方法 重写父类方法等
  • Ctrl + D复制单行
  • iter可以快速生成增强for循环,iter是iteration的缩写
  • Home行首
  • End行尾
  • 两下shift 可以搜索类

IDEA增加断点,使用Debug逐步查看程序运行步骤

  • 点击代码左侧的一栏,增加断点;再次点击该断点,可以删除
    在这里插入图片描述
  • 出现了如图所示的红圆圈,表示断点添加成功
    在这里插入图片描述
  • 右键选择Debug
    在这里插入图片描述
  • 点击下方的控制台中的按键可以完成我们想要的动作
    在这里插入图片描述
  • 其中最左侧Step Over最常用。Step Over为不进入方法内部,一步一步查看程序运行。
    在这里插入图片描述
  • 点击一次Step Over 代码中发生了变化
    在这里插入图片描述
  • 再多点击几次,会发现i的值一点一点增加。
    在这里插入图片描述
  • 这个过程可以让我们完整的看到for循环运行的过程
  • 其它按键:
    Step Into 可以进入调用的方法内部,一步一步查看程序运行
    在这里插入图片描述
    Force Stp Into 强制进入方法内部
    在这里插入图片描述
    Step Out 从方法内部出来
    在这里插入图片描述
    Run to Cursor 使程序运行到鼠标的光标处
    在这里插入图片描述

成员变量和局部变量的内存加载位置

  • 成员变量是在堆空间或者静态域内
  • 局部变量是在栈空间

设置IDEA,让IDEA自动生成serialVersionUID

点击左上角File-点击Settings-点击左侧一栏中的Editor-点击Editor下的Inspections-点击Java-点击Serialization issues-选择Seriallizable class without ‘serialVersionUID’,将右侧的对勾打上。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香鱼嫩虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值