java中的数组
一、数组的特点:
1.数组是一种引用数据类型;
2.元素的数据类型必须统一;
3.数组的长度不可变;
二、数组的初始化:
1.动态初始化: int[] arr = new int[len]; //len为指定 的数组的长度
2.静态初始化: int[] arr = new int[]{1,2,3};
3.静态初始化的省略格式: int[] arr = {1,2,3};
注意:(1)静态初始化标准格式可以拆分为两个步骤,但是一旦使用省略格式,就不能拆分为两个格式。
(2)动态初始化也可以拆分为两个步骤
三、若直接打印数组名称,得到的是数组对应的内存地址哈希值。
四、数组元素的默认值:
1.使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值。
2.静态初始化也有默认值,只不过系统会马上将默认值替换为大括号中的具体数据。
3.元素的数据类型对应的默认值:
整数类型 | 0 |
浮点数类型 | 0.0 |
字符类型 | '\u0000' |
布尔类型 | false |
引用数据类型 | null |
五、数组经常遇到的两个异常:
1.ArrayIndexOutOfBoundsException :数组索引越界异常。
2.NullPointerException :空指针异常。数组必须new初始化才能使用其中的元素。
六、数组作为方法的参数或者返回值,传递的都是数组的地址值。
七、操作数组的常用方法。(Arrays工具类,java.util.Arrays extends java.lang.Object 。里面提供了大量的静态方法以实现数组的常见操作。)
1.变为字符串:
Arrays.toString(参数数组):将参数数组的元素变为字符串形式。按照默认格式:[元素1,元素2,元素3,...]
2.元素的排序:
Arrays.sort(type[] arr):
(1)元素的类型如果是整数、浮点数等,按照默认升序从小到大;
(2)元素的类型如果是字符串,默认按照字符字母升序;
(3)元素的类型如果是自定义的类型,这个自定义的类型需要有 Comparable 或 Comparator 接口的支持。
3.数组的比较:
Arrays.equals():
(1)arr1.equals(arr2):使用的是Object类中的方法: public boolean equals(Object obj) { return (this == obj); }
(2)Arrays.equals(arr1,arr2):使用的是Arrays中的静态方法:
1 public static boolean equals(int[] a, int[] a2) { 2 if (a==a2) 3 return true; 4 if (a==null || a2==null) 5 return false; 6 7 int length = a.length; 8 if (a2.length != length) 9 return false; 10 11 return ArraysSupport.mismatch(a, a2, length) < 0; 12 }
所以有以下:
1 int[] arr1 = new int[]{1,2,3}; 2 int[] arr2 = new int[]{1,2,3}; 3 boolean b1 = arr1.equals(arr2); 4 System.out.println("b1:"+b1); //b1:false 5 boolean b2 = Arrays.equals(arr1, arr2); 6 System.out.println("b2:"+b2); //b2:true 7 System.out.println("b3:"+(arr1==arr2)); //b3:false
4.数组的拷贝:
(1)Arrays.copyOf();
(2)Arrays.copyOfRange();
注意:是数组内容的拷贝,得到是原来的数组地址不同的新的数组。
5.二分查找:
(1)Arrays.binarySearch(type[] arr,type value)
(2)Arrays.binarySearch(type[] arr,int stary,int end,type value)
找到元素value则返回下标,否则返回负值。使用二分查找之前需要先进行排序。
6.填充相同元素:
Arrays.fill(type[] arr, type value):将数组arr中的所有元素全部设置为参数value,无返回值。
7.检查一个数组是否包含某元素:
Arrays.asList(type[] arr).contains(type value) :返回值为布尔型。
8.拼接两个数组:
ArrayUtils.addAll(type[] arrA, type[] arrB)
9.逆向输出数组的元素:
(1)ArrayUtils.reverse(type[] arr) ; Arrays.toString(type[] arr)
(2)或者新建一个数组,循环原数组,将元素从新数组的尾部开始填入。
10.移除数组中的元素:
ArraysUtils.removerElement(type[] arr ,type value)、
八、数组与集合的区别:
本文来自博客园,作者:水啾2,转载请注明原文链接:https://www.cnblogs.com/shuijiu/p/15024334.html