这两个类都包含了很多用来操作Java数组的静态函数,分别定义如下:

  • public final class Array
    extends Object
  • public class Arrays
    extends Object

二者区别:

Array Arrays

Array类提供静态方法来动态创建和访问Java数组。

Array允许在获取或设置操作期间扩大转换(方法为使用现有的数组新建一个更大的数组),但如果发生缩小转换,则抛出IllegalArgumentException 。


该类包含用于操作数组的各种方法(如排序和搜索)。 该类还包含一个静态工厂,可以将数组视为列表。 
如果指定的数组引用为空,则该类中的方法都抛出一个NullPointerException 

先复习一下数组的基本知识:

int[] ints=new int[5]   //此时虚拟机在在内存上申请了一段单位大小四个字节,长度为5的连续内存,并将元素初始化为0;

(数组可以先声明再初始化,一旦初始化后,数组的长度便不可更改)常用数组的默认值如下:

public static void main(String[] args) {int[] ints = new int[1];for (int i : ints) System.out.println(i);float[] floats = new float[1];for (float f : floats) System.out.println(f);char[] chars=new char[1];chars[0]=72;for(char c:chars) System.out.println(c);boolean[] booleans=new boolean[1];for(boolean b:booleans) System.out.println(b);String[] strings=new String[1];for(String s:strings) System.out.println(s);}

结果:

Array:

static Object newInstance(Class<?> componentType, int length)  创建具有指定组件类型和长度的新数组
static Object get(Object array, int index)  返回指定数组对象中的索引组件的值。
static int getInt(Object array, int index) 返回指定数组对象中的索引组件的值,如 int 
static void set(Object array, int index, Object value) 将指定数组对象的索引组件的值设置为指定的新值。  
static void setBoolean(Object array, int index, boolean z)  将指定数组对象的索引组件的值设置为指定的 boolean值。

代码示例:(其中用到反射知识,参考我的博文:https://blog.csdn.net/qq_42013035/article/details/103362162)

 public static void main(String[] args) {int[] ints=new int[5];Arrays.fill(ints,3);//初始填充3System.out.println("length:"+ints.length);for(int i:ints) System.out.print(i+" ");int[] ints1= (int[]) Array.newInstance(ints.getClass().getComponentType(),10);//新建一个元素类型为int,长度为10的数组System.arraycopy(ints,0,ints1,0,ints.length);System.out.println("\nlength:"+ints1.length);for(int i:ints1) System.out.print(i+" ");System.out.println("\n"+Array.get(ints,3));}

结果:

Arrays:

Arrays是操作数组的工具类,它的功能相比Array更加强大(也可以说是对Array功能的丰富,二者皆有用武之地),在jdk1.2版本发布。

static <T> List<T> asList(T... a)  返回由指定数组支持的固定大小的列表。
static boolean deepEquals(Object[] a1, Object[] a2)  如果两个指定的数组彼此 深度相等 ,则返回 true
static int deepHashCode(Object[] a)  根据指定数组的“深度内容”返回哈希码
static void fill(int[] a, int val)  将指定的int值分配给指定的int数组的每个元素。
static void fill(int[] a, int fromIndex, int toIndex, int val)  将指定的int值分配给指定的int数组的指定范围的每个元素
static int hashCode(int[] a)  根据指定数组的内容返回哈希码
static int binarySearch(int[] a, int key) (加一个范围参数) 使用二叉搜索算法搜索指定值的位置,没有则返回负
static int[] copyOfRange(int[] original, int from, int to)  将指定数组的指定范围复制到新数组中。 
static void sort(int[] a) 按照数字顺序排列指定的数组
static void sort(Object[] a)  对指定对象升序排列的阵列,根据natural ordering的元素
static void sort(int[] a, int fromIndex, int toIndex)  按升序排列数组的指定范围
static String toString(int[] a) 返回指定数组的内容的字符串表示形式

static IntStream stream(int[] array, int startInclusive, int endExclusive)
返回顺序IntStream与指定的数组作为源的指定范围

注:

1.sort()默认使用的是MergeSort(归并排序),可以自定义其他的算法,但它必须是稳定的

2.当时用binarySearch时,数组一定要是有序的,因为二叉树搜索算法用到了二分法

3.sort(Object[] a) 按照的是字符的自然顺序排列的

代码示例:

public static void main(String[] args) {int[] ints={2,4,3,1,9,6,5,4};System.out.println("inst length:"+ints.length);System.out.println(Arrays.toString(ints));int[] ints1=Arrays.copyOf(ints,10);//莫名感觉它比Array里的newInstance厉害哈哈哈System.out.println("ints1 length"+ints1.length);System.out.println(Arrays.toString(ints1));System.out.println("ints1's hashcode:"+Arrays.hashCode(ints1));Arrays.sort(ints);System.out.println("after sort by Arrays:");System.out.println(Arrays.toString(ints));System.out.println("binarySearch result is "+Arrays.binarySearch(ints,9));System.out.println(Arrays.toString(ints));/*引用类型数据数组*/;String[] strings={"hello","world","who","are","you"};System.out.println(Arrays.toString(strings));System.out.println("deep hashcode:"+Arrays.deepHashCode(strings));Arrays.sort(strings);System.out.println(Arrays.toString(strings));List list=Arrays.asList(1,1,2,2,3);//使用将数量较少的元素快速转换成对应的集合System.out.println(list.size());Iterator iterator=list.iterator();while (iterator.hasNext()) System.out.print(iterator.next().toString()+" ");}

结果:

Arrays及Array相关推荐

  1. arrays 和array的区别 blogbus

    http://b0r0j0.blogbus.com/logs/1646758.html J2SE综合:对java.util的总结6 15.9 Arrays (数组) Java 2在java.util中 ...

  2. PostgreSQL处理jsonb中的arrays of array 类型

    一.提出问题 在postgre数据库,遇到了数组内嵌套数组的jsonb存储格式,如下: SELECT * FROM public.keyword_trend 查询结果: 其中,history一栏[[& ...

  3. 更高效地刷OJ——Java中常用的排序方法,Array.sort(),Arrays.parallelSort(), Collections.sort()

    对于几大传统的排序算法我在前面博客中已经介绍过了,如果有想要了解的同学可以去看这篇博客八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序但是我们在刷题过程中如果题目中没有对排 ...

  4. php recordarray,Array 数组 - [ php中文手册 ] - 在线原生手册 - php中文网

    用户评论: [#1] florenxe [2015-10-07 18:53:45] //a nice little way to print leap years using array for ($ ...

  5. Java之Array(数组)说明

    代码说明: 1 package array; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 import java.util ...

  6. java中Array和ArrayList区别

    2019独角兽企业重金招聘Python工程师标准>>> 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array". 2)Array([] ...

  7. Flatten Nested Arrays(展平嵌套数组)

    这个题目是在一个公司现场面谈的时候的一个题目.虽然对这种找工作上来就做题目的现象比较反感. 但是大环境如此,也只能被蹂躏了. 中文描述 题目要求比较简单:[1,2,[3],[[4]],5,6] -&g ...

  8. How to Convert Array to ArrayList in Java?

    2019独角兽企业重金招聘Python工程师标准>>> This article analyzes answers for a top-voted questions on Stac ...

  9. 二十四,Arrays和比较器

    2019独角兽企业重金招聘Python工程师标准>>> 1.Arrays类定义 Arrays类是Java API中提供的类 ,与数组操作相关.可以使用此类对数组进行相关的操作.在ja ...

最新文章

  1. 程序员从初级到中级10个秘诀 【转载】
  2. jenkins再不同操作系统上的安装教程
  3. boost::hana::tuple_c用法的测试程序
  4. 基于IntelliJ IDEA和Ubuntu的Chisel开发环境搭建
  5. docker使用问题总结
  6. 手机有一个时钟的标志_手机桌面时钟有这几款就够了
  7. 99个wordpress经典插件
  8. maven库的查询和配置
  9. Mac系统MATLAB_R2018a软件CVX下载及安装
  10. laravel 使用队列进行微信模板消息的群发
  11. 一元运算符 + 表示正号 - 表示负号
  12. Java实现FTP下载文件到客户端(浏览器)
  13. 材料科学与工程毕业论文题目【313个】
  14. 其次线性方程组,行列式为0,一定有非0解.
  15. SQL Server数据库mdf文件中了勒索病毒BUNNY。扩展名变为BUNNY
  16. 基于单片机的环境监测系统设计(#0473)
  17. PHP使用phpCAS对接CAS单点登陆系统
  18. 计算机桌面怎么添加便签,桌面记事本,详细教您怎么在桌面添加便签
  19. AI神经网络-CNN基本结构分析( Conv层、Pooling层、FCN层/softmax层)
  20. python perl r_PHP Python Ruby Perl

热门文章

  1. java 雷达图_Android雷达图(蜘蛛网图),自定义view之雷达图,正五边雷达图,分数图...
  2. 北华航天工业学院计算机如何,北华航天工业学院的实力怎么样?如何评价这所学校?...
  3. Qt 使用阿里巴巴字体图标库 iconfont
  4. 双显示器扩展怎么设置上下扩展
  5. Vue搭建可视化界面
  6. CAD转PNG,怎样转换成高质量清晰的黑白图片
  7. 嵌入式系统开发笔记81:嵌入式系统的本质
  8. HOOK 几种实现方式区别
  9. U盘pe(理论大白菜、优启通、微PE都可以) 装ESXI方案 (非通用UltraISO重做启动U盘),省U盘
  10. “新产业50人论坛”之钱旭红院士:量子思维与创新发展