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)、

八、数组与集合的区别:

1.数组的长度是固定的,不可变的,集合的长度是可以改变的。
2.数组中存储的是同一种类型的元素,可以存储基本数据类型的元素,也可以存储对象。
3.集合存储的都是对象,对象的类型可以不一致。
4.在开发中当对象多的时候,一般使用集合进行储存。

posted @ 2021-07-17 22:16  水啾2  阅读(88)  评论(0编辑  收藏  举报