Java Programming Fundamentals stage notes day06 two-dimensional array

 

Two-dimensional array

Notes Notes

  • Two-dimensional array

  • Two-dimensional array declaration

  • Two-dimensional array with two static initialization initialization

  • And obtain two-dimensional array element assignment

  • Two-dimensional array traversal

  • Two-dimensional array of memory parsing

  • Print Pascal's Triangle

  • Arrays Tools

  • Array common exceptions

    • Two-dimensional array

Element two-dimensional array is one-dimensional array

    • Declare and initialize a two-dimensional array

String  [][] persons;

String persons2[][];

String [] persons3[];

    • Two-dimensional array initialization

    • // static initialization

persons = new String [] [] {{ "Xiaolong Ge", "110"}, { "Ogura", "119"}, { "small strong", "120"}};

// declaration and initialization can not be separated

int[][] numbers = {{1,2},{3,4},{5,6}};

    • // dynamic initialization

persons2 = new String[3][2];

3 // length worth two-dimensional array, two-dimensional array refers to an element length (one-dimensional array) of

 

// create a two-dimensional array of length 3, two-dimensional array element is null

persons3 = new String[3][];

persons3[0] = new String[2];

persons3[1] = new String[3];

  • Gets the value of two-dimensional array of values, elements

       String aString = persons3[2][2];

       int a = persons3.length;

int b = persons3[0].length;

  • Traverse the elements of a two-dimensional array

// traverse the two-dimensional array

        for (int i = 0; i < numbers.length; i++) {

                for (int j = 0; j < numbers[i].length; j++) {

                        System.out.print(numbers[i][j] + " ");

                }

                System.out.println();

        }

  • 二维数组内存解析

  • 打印杨辉三角

使用二维数组打印一个 10 行杨辉三角。

【提示】

1. 第一行有 1 个元素, 第 n 行有 n 个元素

2. 每一行的第一个元素和最后一个元素都是 1

3. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:

yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];

public class YangHui {

        public static void main(String[] args) {

                //创建二维数组

                int[][] numbers = new int[10][];

                //给二维数组的元素赋值

                for (int i = 0; i < numbers.length; i++) {

                        //创建二维数组的元素(一维数组)

                        numbers[i] = new int[i + 1];

                        //给二维数组中的元素的第一个元素和最后一个元素赋值

                        numbers[i][0] = numbers[i][i] = 1;

                        //遍历二维数组中的元素(一维数组),不包括第一个和最后一个

                        for (int j = 1; j < numbers[i].length - 1; j++) {

                                numbers[i][j] = numbers[i - 1][j] + numbers[i - 1][j - 1];

                        }

                }

                //遍历二维数组

                for (int i = 0; i < numbers.length; i++) {

                        for (int j = 0; j < numbers[i].length; j++) {

                                System.out.print(numbers[i][j] + " ");

                        }

                        System.out.println();

                }

        }

}

  • Arrays工具类使用

 int[] ns = {5,2,30,4,1,90};

          int[] ns2 = {5,2,3,4,1};

           //比较两个数组是否相等 : 比较的是内容,个数,顺序

          boolean equals = Arrays.equals(ns, ns2);

          System.out.println(equals);

          

           //输出数组信息

          String nsStr = Arrays.toString(ns);

          System.out.println(nsStr);

          

           //将指定的数值填充到数组中

          Arrays.fill(ns, 100);

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

          

           //对数组中的内容进行排序

           Arrays.sort(ns);

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

          

           //二分法查找 - 使用前必须先排序 - 如果找不到会返回负数

           int index = Arrays.binarySearch(ns, 4);

           System.out.println(index);

 

  • 数组中常见的异常

//1.数组下角标越界 :ArrayIndexOutofBoundsException

                int[] numbers = new int[2]; //索引值合理范围 :0 ~ 长度-1

                System.out.println(numbers[2]); //发生了异常

                System.out.println(numbers[-1]); //发生了异常

                //2.空指针异常 :: NullPointerException

                String str = "aaa";

                str = null;

                System.out.println(str.toUpperCase());//发生了异常

                

                String[] names = new String[2];

                System.out.println(names[0].toUpperCase());//发生了异常

                

                String[][] persons = new String[3][];

                System.out.println(persons[0][0]); //发生了异常

                System.out.println(persons[0].length); //发生了异常

  • 习题:数组声明

声明:int[] x,y[]; 在给x,y变量赋值以后,以下选项允许通过编译的是:

a ) x[0] = y;   //类型不符,x[0]为int类型,而y为引用类型

b)   y[0] = x;  //可以

c)   y[0][0] = x; //类型不否,x为引用类型,而y[0][0]为int类型

d)   x[0][0] = y; //x为一维数组

e)   y[0][0] = x[0];  //可以

f)   x = y;   //类型不符,一个是一维数组,一个是二维数组

提示:

一维数组:int[] x 或者int x[]  

二维数组:int[][] y 或者 int[] y[] 或者 int y[][]

总结Summary

  • 二维数组遍历

  • 二维数组内存解析

  • 杨辉三角

  • Arrays工具类

  • 数组常见异常

Guess you like

Origin www.cnblogs.com/bigdatahub/p/11278640.html