首先先创建一个打印数组的方法,方便后面直接使用

public static void output(int []a) {
for(int i=0;i<a.length;i++) {
System.out.printf(a[i]+" ");
}
System.out.println();
}

1、填充数组:fill

eg1.

int []arr = new int[5];
Arrays.fill(arr, 2);
output(arr);

结果是:2 2 2 2 2 
分析:给所有值赋值2 
eg2.

int []arr = new int[5];
Arrays.fill(arr, 1,3,8);
output(arr);

结果是:0 8 8 0 0 
分析:给第1位(0开始)到第3位(不包括)赋值8

2、数组元素排序:sort

eg1.

int []arr = {3,2,1,5,4};
Arrays.sort(arr);
output(arr);

结果是:1 2 3 4 5 
分析:给所有数按升序排序 
eg2.

int []arr = {3,2,1,5,4};
Arrays.sort(arr,1,3);
output(arr);

结果是:3 1 2 5 4 
分析:给第1位(0开始)到第3位(不包括)排序

3、比较数组元素是否相等:equals

int []arr1 = {1,2,3};
int []arr2 = {1,2,3};
System.out.println(Arrays.equals(arr1,arr2));

结果是:true 
分析:如果是arr1.equals(arr2),则返回false,因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了equals,所以,这里能比较元素是否相等。 
这里补充一下,如果还是不用Arrays.equals,那么我们应该如何重写equals来比较两个数组的元素是否相等呢?这里提供一段代码

//Compare the contents of two int arrays
public static boolean isEquals(int[] a, int[] b)
{
if( a == null || b == null )
{
return false;
}
if(a.length != b.length)
{
return false;
}
for(int i = 0; i < a.length; ++i )
{
if(a[i] != b[i])
{
return false;
}
}
return true;
}

4、二分查找法找指定元素的索引值(下标):binarySearch

数组一定是排好序的,否则会出错。找到元素,只会返回最后一个位置 
eg1:

int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 20));

结果是:1 
分析:能找到该元素,返回下标为1(0开始) 
eg2:

int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 35));

结果是:-4 
分析:找不到元素,返回-x,从-1开始数,如题,返回-4 
eg3:

int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 0,3,30));

结果是:2 
分析:从0到3位(不包括)找30,找到了,在第2位,返回2 
eg4:

int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 0,3,40));

结果是:-4 
分析:从0到3位(不包括)找40,找不到,从-1开始数,返回-4

5、截取数组:copeOf和copeOfRange

eg1: copy

int []arr = {10,20,30,40,50};
int []arr1 = Arrays.copyOf(arr, 3);
output(arr1);

结果:10 20 30 
分析:截取arr数组的3个元素赋值给姓数组arr1 
eg2: copyOfRange

int []arr = {10,20,30,40,50};
int []arr1 = Arrays.copyOfRange(arr,1,3);
output(arr1);

结果:20 30 
分析:从第1位(0开始)截取到第3位(不包括)

6、其他

还有hashCode,toString,clone等这里就不介绍了,暂时用的少


本文地址:http://liuyanzhao.com/2863.html

Java中的Arrays类使用详解的更多相关文章

  1. JAVA中的String类(详解)

    Java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类.String是一个类不属于基本数据类型. 可以从源码中看到,String是一个final类型. String ...

  2. Java 中的异常和处理详解

    Java 中的异常和处理详解 原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误 ...

  3. Delphi中的线程类 - TThread详解

    Delphi中的线程类 - TThread详解 2011年06月27日 星期一 20:28 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本 ...

  4. MFC中文件对话框类CFileDialog详解及文件过滤器说明

    当前位置 : 首页 » 文章分类 :  开发  »  MFC中文件对话框类CFileDialog详解及文件过滤器说明 上一篇 利用OpenCV从摄像头获得图像的坐标原点是在左下角 下一篇 Word中为 ...

  5. java中equals和==的区别详解

    java中的数据类型,可分为两类: 1.基本数据类型. byte,short,char,int,long,float,double,boolean这八大原始数据类型他们之间的比较,使用“==”,比较的 ...

  6. java中的访问修饰符详解

    主要讲述一下java中protected的修饰控制范围. 在叙述protected修饰符使用之前,先来说一下java,可以发现,开发java程序是一个时时刻刻都在编写类.开发类.定义类的过程.类里面可 ...

  7. JAVA中常见的阻塞队列详解

    在之前的线程池的介绍中我们看到了很多阻塞队列,这篇文章我们主要来说说阻塞队列的事. 阻塞队列也就是 BlockingQueue ,这个类是一个接 口,同时继承了 Queue 接口,这两个接口都是在JD ...

  8. java入门---对象和类&概念详解&实例

        Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载     这篇文章,我们主要来看下: 对象:对象是类的一个实例(对象不是找个女朋友),有状态 ...

  9. Java中23种经典设计模式详解

    Java中23种设计模式目录1. 设计模式 31.1 创建型模式 41.1.1 工厂方法 41.1.2 抽象工厂 61.1.3 建造者模式 101.1.4 单态模式 131.1.5 原型模式 151. ...

随机推荐

  1. linux git:fatal: HTTP request failed

    问题 问题的出现比较奇怪 我一台电脑 git clone   没问题 另外一台电脑  git  clone  有问题 解决 yum update nss nss-util nspr 参考 https: ...

  2. js重写系统的弹框

     //调用系统的弹框,不显示地址 window.alert = function(name){    var iframe = document.createElement("IFRAME& ...

  3. localStorage 设置本地缓存

    var timestamp = parseInt(Date.parse(new Date()));var btn = document.getElementById("close" ...

  4. Boost中的网络库ASIO,nginx

    boost C++ 本身就是跨平台的,在Linux.Unix.Windos上都可以使用. Boost.Asio  针对网络编程,很多服务端C++开发使用此库. 这个库在以下的平台和编译器上测试通过: ...

  5. ubuntu16.10安装网易云音乐

    首先去官网(https://music.163.com/#/download)下载安装包:netease-cloud-music_1.1.0_amd64_ubuntu.deb 下载好以后,执行安装命令 ...

  6. Oracle.PL/SQL高级

    一.匿名块 .使用returning ... INTO 保存增删改表数据时的一些列的值 ()增加数据时保存数据 DECLARE v_ename emp.ename%TYPE; v_sal emp.sa ...

  7. 逆袭之旅DAY16.东软实训.Oracle.序列

    2018-07-12 14:07:44 序列 序列1.创建序列create sequence 序列名 [increment by n] ---步长 [start with n] ---序列的起始值 序 ...

  8. learning ddr pagesize calculate

    example: if DDR is 512MB*16*8 COLBITS = 10,  A0-A9 be used for cloumn address. ORG = 16 ,  each bank ...

  9. 获取音、视频时长(NAudio,Shell32,FFmpeg)

    参考网址:https://blog.csdn.net/u013810234/article/details/57471780 以下为本次测试用到的音.视频格式: audio :”.wav;.mp3;. ...

  10. 各个版本的jee(servlet,jsp)对应的web.xml的模板

    参考链接: https://yutuo.net/archives/7048a006eeb2ac85.html