从零开始学java--数组

面向对象高级篇

目录

面向对象高级篇

数组

一维数组

语法:

静态初始化:

访问数组的某一个元素:

判断相同和打印数组:

多维数组

语法:

遍历多维数组:

可变长参数


数组

一维数组

数组是相同数据类型的有序集合,数组可以表示任何相同类型的一组内容(包括引用类型和基本类型)其中存放的每一个数据称为数组的一个元素。

语法:

    public static void main(String[] args) {
        int[] array; //类型[]表示这是个数组类型
    }

数组类型比较特殊,它本身也是类,但是编程不可见(底层C++编写,在运行时动态创建)即使是基本类型的数组,也是以对象的形式存在的,并不是基本数据类型。所以我们要创建一个数组,同样需要使用new关键字:

    public static void main(String[] args) {
        int[] array=new int[10];  //在创建数组时,需要指定数组长度
        Object obj =array;  //因为同样是类,肯定是继承自Object的,所以可以直接向上转型
    }

同样可以使用Object类的各种用法。

静态初始化:

    public static void main(String[] args) {
        int[] array=new int[]{1,2,3,4,5};
  //缩写int[] array={1,2,3,4,5};
        System.out.println(array.length);
    }

数组长度不能为负数。

length是在一开始就确定的,而且是final类型的,不允许修改。

创建出来的数组,每个位置上都有默认值,如果是引用类型就是null,如果是基本数据类型就是0,或者是false,跟对象成员变量的默认值是一样的。

访问数组的某一个元素:

    public static void main(String[] args) {
        int[] array=new int[]{1,2,3,4,5};
        System.out.println(array[1]); //变量名[下标]
    }
//输出2

也可以通过这种方式为数组的元素赋值或修改值:

    public static void main(String[] args) {
        int[] array=new int[]{1,2,3,4,5};
        array[0]=888;
        System.out.println(array[0]);
    }

数组的下标是从0开始的,不是从1开始。第一个元素下标是0,访问元素不能写成负数或超出范围,否则会出现异常。

判断相同和打印数组:

    public static void main(String[] args) {
        int[] a={1,2,3,4,5};
        int[] b={1,2,3,4,5};
        System.out.println(a.equals(b)); //输出false
        System.out.println(equals(a,b)); //输出true
    }

    private static boolean equals(int[]a,int[]b){
        for (int i = 0; i < a.length; i++)
            if(a[i]!=b[i]) return false;
        return true;
    }

打印整个数组中的元素也只能一个一个访问:

    public static void main(String[] args) {
        int[] a={1,2,3,4,5};

        for (int i = 0; i < a.length; i++) { 
            System.out.print(a[i]+" ");
        }
//简写:   for (int i :a){
//            System.out.print(i);
//        }
    }
//输出1 2 3 4 5

对于基本类型的数组来说不支持自动装箱和拆箱。

由于基本数据类型和引用类型不同,所以说int类型的数组不能被Object类型的数组变量接收。引用类型的话是可以的,且支持向上转型和向下转型。

引用类型用final就是不能改变它引用的对象,数组里面的值可以修改:

    public static void main(String[] args) {
        final int[] a={1,2,3,4,5}; //加final里面的值可以改
        a[0]=100;
        System.out.println(a[0]);
    }

 


多维数组

语法:

    public static void main(String[] args) {
        int[][] a={{1,2},{3,4},{5,6}};
        System.out.println(a[0][1]);
    }
    public static void main(String[] args) {
        int[][] arr =new int[][]{{1,2,3,4},
                                 {5,6,7,8}};
        System.out.println(arr[1][1]);
    }
//输出6

可以引用或修改某一个数组:

    public static void main(String[] args) {
        int[][] arr =new int[][]{{1,2,3,4},
                                 {5,6,7,8}};
        int[]a=arr[0];  //引用
        arr[0]=new int[]{0,0,0,0};  //修改
        System.out.println(arr[0][1]);
    }

 

遍历多维数组:

需要多次嵌套循环:

    public static void main(String[] args) {
        int[][] arr =new int[][]{{1,2,3,4,0,3},
                                 {5,6,7,8}};
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
    }

 


可变长参数

数组的延伸应用。

我们在使用时,可以传入0~n个对应的实参:

    public static void main(String[] args) {
        test("1","2","3");
    }

    private static void test(String... str){
        System.out.println(str[0]);
    }
//输出1
    private static void test(String... str){
        for(String s:str){
            System.out.println(s);
        }
    }
//输出
1
2
3

如果同时存在其他参数,那么可变长参数只能放在最后。且可变长参数只能有一个。

你可能感兴趣的:(算法,数据结构,java)