Day08|狂神说java—数组及Array类部分方法总结

一、数组的声明和创建
二、三种初始化
三、数组的使用
四、二维数组
五、Arrays类

一、数组的声明和创建

  • int[] nums; 声明数组

    nums=new int[10];//创建数组,10个元素

  • int[] nums=new int[10]; 创建数组

package com.hsms.array;

public class ArrayDemo {
    public static void main(String[] args) {
        /*int[] nums;//声明数组
        nums=new int[10];//创建数组,10个元素*/
        int[] nums=new int[10];//创建数组,数组中有10个元素,开辟空间
        int sum=0;
        for (int i = 0; i <10 ; i++) {//用for循环给数组赋值,将1-10赋给数组
            nums[i]=i+1;
        }
        for (int i = 0; i <nums.length ; i++) {//求数组中的数值之和
            sum+=nums[i];
        }
        System.out.println(sum);
    }
}
结果:
55

二、三种初始化

数组的静态初始化

int[] a={1,2,3,4,5,6};//数组,静态初始化;创建+赋值

数组的动态初始化

int[] b=new int[10];//动态初始化,包括默认初始化

数组的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

package com.hsms.array;

public class ArrayDemo1 {
    public static void main(String[] args) {
        int[] a={1,2,3,4,5,6};//数组,静态初始化;创建+赋值
        int[] b=new int[10];//动态初始化,包括默认初始化
        b[0]=1;
        b[1]=10;
        System.out.println(b[0]);
        System.out.println(b[1]);
        System.out.println(b[2]);
    }
}
运行结果:
1
10
0

小结:

​ 数组是相同数据类型(数据类型可以为任意类型)的有序集合数组也是对象。

​ 数组元素相当于对象的成员变量数组长度的确定的,不可变的。如果越界,则报*:ArrayIndexOutofBounds*

三、数组的使用

  • For-Each循环

  • 数组作方法入参

  • 数组作返回值

    下面为功能为数组的反转的方法。

package com.hsms.array;

public class ArrayReverse {
    public static void main(String[] args) {
        int[] arrays={10,9,8,7,6,5};
        printArray(arrays);
        System.out.println("=====反转后=====");
        int[] reverse = reverse(arrays);
        printArray(reverse);
    }
    public static int[] reverse(int[] arrays){
        int[] result=new int[arrays.length];//将arrays的长度给result,result就有了长度
        for (int i = 0,j=result.length-1; i <arrays.length; i++,j--) {//反转
            result[j]=arrays[i];
        }
        return result;
    }
    public static void printArray(int[] arrays){//打印数组;数组作方法的参数
        /*for (int i : arrays) {//增强for循环
            System.out.print(arrays[i]+" ");
        }//局限性大*/
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i]+" ");
        }
        System.out.println();
    }
}
运行结果:
10 9 8 7 6 5 
=====反转后=====
5 6 7 8 9 10 

四、二维数组

  • 如果arrays为二维数组,则arrays.length为数组的行数,arrays.length[i]为数组的列数。
package com.hsms.array;

public class MulArray {//多维数组
    public static void main(String[] args) {
        int[][] arrays={{1,2},{3,4},{5,6},{7,8}};
        /*System.out.println(arrays.length);//数组的行数
        System.out.println(arrays[0].length);//数组的列数*/
        for (int i = 0; i < arrays.length ; i++) {
            for (int j = 0; j <arrays[i].length ; j++) {
                System.out.print(arrays[i][j]+" ");
            }
        }
    }
}
运行结果:
1 2 3 4 5 6 7 8 

五、Arrays类

​ Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用(注意:是"不用"而不是“不能")
具有以下常用功能:
◆给数组赋值:通过fill方法。
◆对数组排序:通过sort方法,按升序
比较数组:通过equals方法比较数组中元素值是否相等。
查找数组元素: 通过binarySearch方法能对排序好的数组进行二分查找法操作。

1.fill方法

  • Arrays.fill(a,0); fill方法,要填充的数组,val:要填充的值;填充完需要打印,才有结果

    System.out.println(Arrays.toString(a));

    例子:全部填充为0

  • Arrays.fill(a,2,4,0); fill方法,下角标[fromIndex,toIndex)左闭右开

    System.out.println(Arrays.toString(a));

    例子:将在[2,4)间的索引填充0 (Line 41)

2.sort方法

  • Arrays.sort(a); sort方法排完序后,需要再打印(Line 35)

    System.out.println(Arrays.toString(a));

3.equals方法

  • System.out.println(Arrays.equals(b,c));

    equals方法,两个数组以相同的顺序包含相同的元素则返回true,否则为false

    例子:比较b,c数组(Line 43)

4.binarySearch方法

  • System.out.println(Arrays.binarySearch(a,2)); binarySearch方法,数组,查找值,返回索引值

    使用binarySearch方法需要先排序

    例子:二分法查找key值为2的索引(Line 50)

  • System.out.println(Arrays.binarySearch(a,2,5,6645)); 左闭右开

    例子:二分法查找索引在[2,5)间的key值的索引(Line 52)

package com.hsms.array;

/**
 * @author 幻世蛮殇
 */

import java.util.Arrays;

public class ArrayDemo2 {
    //Array类
    public static void main(String[] args) {
        int[] a={1,2,54685,545,6645,42};
        //System.out.println(a);//哈希code
        //printArrays(a);//自己的打印方法
        Arraystest(a);
    }
    public static void printArrays(int[] a){//自己的打印数组方法
        for (int i = 0; i < a.length ; i++) {
            if (i==0){//判断是否为第一个数
                System.out.print("["+a[i]+", ");
            } else if (i==a.length-1){//判断是否为是否为最后一个数
                System.out.print(a[i]+"]");
            }else {
                System.out.print(a[i]+", ");
            }
        }
    }

    public  static void Arraystest(int[] a){
        int[] b={1,2,3,4};
        int[] c={4,3,2,1};
        int[] d={1,2,3,4};
        //Arrays类中的toString方法,打印数组,将数组以字符串的形式返回
        //System.out.println(Arrays.toString(a));
        Arrays.sort(a);//sort方法排完序后,需要再打印
        //printArrays(a);
        //Arrays.fill(a,0);//fill方法,要填充的数组,val:要填充的值;填充完需要打印
        System.out.println("数组a:");
        System.out.println(Arrays.toString(a));
        Arrays.fill(a,2,4,0);//fill方法,下角标[fromIndex,toIndex)
        System.out.println("将在[2,4)间的索引填充0:");
        System.out.println(Arrays.toString(a));
        System.out.println("b与c两数组是否相等:");
        System.out.println(Arrays.equals(b,c));//equals方法,两个数组以相同的顺序包含相同的元素则返回true
        System.out.println("b与d两数组是否相等:");
        System.out.println(Arrays.equals(b,d));
        Arrays.sort(a);
        System.out.println("使用binarySearch方法需要先排序:");
        System.out.println(Arrays.toString(a));
        System.out.println("二分法查找key值为2的索引为:");
        System.out.println(Arrays.binarySearch(a,2));//binarySearch方法,数组,查找值,返回索引值
        System.out.println("二分法查找索引在[2,5)间的key值的索引为:");
        System.out.println(Arrays.binarySearch(a,2,5,6645));//左闭右开
    }
}

运行结果:

数组a:
[1, 2, 42, 545, 6645, 54685]
将在[2,4)间的索引填充0:
[1, 2, 0, 0, 6645, 54685]
b与c两数组是否相等:
false
b与d两数组是否相等:
true
使用binarySearch方法需要先排序:
[0, 0, 1, 2, 6645, 54685]
二分法查找key值为2的索引为:
3
二分法查找索引在[2,5)间的key值的索引为:
4
上一篇:Day08-Java基础语法-数据类型扩展及面试题讲解


下一篇:C++笔试题day08