zoukankan      html  css  js  c++  java
  • Java编程基础阶段笔记 day06 二维数组

    二维数组

    笔记Notes

    • 二维数组

    • 二维数组声明

    • 二维数组静态初始化与二位初始化

    • 二维数组元素赋值与获取

    • 二维数组遍历

    • 二维数组内存解析

    • 打印杨辉三角

    • Arrays工具类

    • 数组中常见的异常

      • 二维数组

    二维数组的元素是一维数组

      • 二维数组的声明和初始化

    String  [][] persons;

    String persons2[][];

    String [] persons3[];

      • 二维数组的初始化

      • //静态初始化

    persons = new  String[][]{{"小龙哥","110"},{"小仓","119"},{"小强","120"}};

    //声明和初始化不能分开

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

      • //动态初始化

    persons2 = new String[3][2];

    //3值得是二维数组长度,2指的是二维数组元素(一维数组)的长度

    //创建一个长度为3的二维数组,二维数组的元素为null

    persons3 = new String[3][];

    persons3[0] = new String[2];

    persons3[1] = new String[3];

    • 获取二维数组的值,元素的值

           String aString = persons3[2][2];

           int a = persons3.length;

    int b = persons3[0].length;

    • 遍历二维数组的元素

    //遍历二维数组

            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工具类

    • 数组常见异常

  • 相关阅读:
    相似数据检测算法
    从一个简单的程序中你能看到什么?(面向对象的真帝)
    如何更好的理解类和结构
    从一个很简单的文件上传来品味面向对象的大局观(抽象类和功能类)
    网站中的缩略图是如何生成的?(C#处理图像)
    进程间通信(一)
    POSIX线程-(六)
    进程间通信(四)
    进程间通信(三)
    POSIX线程-(五)
  • 原文地址:https://www.cnblogs.com/bigdatahub/p/11278640.html
Copyright © 2011-2022 走看看