Java编程基础阶段笔记 day06 二维数组

简介: ​二维数组笔记Notes二维数组二维数组声明二维数组静态初始化与二位初始化二维数组元素赋值与获取二维数组遍历二维数组内存解析打印杨辉三角Arrays工具类数组中常见的异常二维数组二维数组的元素是一维数组二维数组的声明和初始化String [][] persons;...

二维数组

笔记Notes

二维数组

二维数组声明

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

二维数组元素赋值与获取

二维数组遍历

二维数组内存解析

打印杨辉三角

Arrays工具类

数组中常见的异常

二维数组

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

二维数组的声明和初始化

String [][] persons;

String persons2[][];

String [] persons3[];

二维数组的初始化

//静态初始化

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

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

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

//动态初始化

persons2 = new String3;

//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. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:

yanghuii = yanghuii-1 + yanghuii-1;

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) y0 = x; //类型不否,x为引用类型,而y0为int类型

d) x0 = y; //x为一维数组

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

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

提示:

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

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

总结Summary

二维数组遍历
二维数组内存解析
杨辉三角
Arrays工具类
数组常见异常

目录
相关文章
|
4天前
|
缓存 安全 Java
Java并发编程进阶:深入理解Java内存模型
Java并发编程进阶:深入理解Java内存模型
14 0
|
4天前
|
监控 Java 测试技术
Java并发编程最佳实践:设计高性能的多线程系统
Java并发编程最佳实践:设计高性能的多线程系统
18 1
|
2天前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
16 0
|
4天前
|
设计模式 安全 Java
Java并发编程实战:使用synchronized关键字实现线程安全
Java并发编程实战:使用synchronized关键字实现线程安全
16 0
|
1天前
|
存储 安全 Java
【数据保护新纪元】Java编程:揭秘黑客攻击背后的防线,打造坚不可摧的安全堡垒!
【8月更文挑战第30天】本文全面介绍了Java安全性编程的基本概念和实战技巧,涵盖输入验证、错误处理、数据加密、权限控制及安全审计等方面。通过具体示例,帮助开发者有效预防安全风险,提升程序的稳定性和可靠性,保护用户数据安全。适合希望提升Java应用安全性的开发者参考。
13 4
|
1天前
|
IDE Java 测试技术
揭秘Java高效编程:测试与调试实战策略,让你代码质量飞跃,职场竞争力飙升!
【8月更文挑战第30天】在软件开发中,测试与调试对确保代码质量至关重要。本文通过对比单元测试、集成测试、调试技巧及静态代码分析,探讨了多种实用的Java测试与调试策略。JUnit和Mockito分别用于单元测试与集成测试,有助于提前发现错误并提高代码可维护性;Eclipse和IntelliJ IDEA内置调试器则能快速定位问题;Checkstyle和PMD等工具则通过静态代码分析发现潜在问题。综合运用这些策略,可显著提升代码质量,为项目成功打下坚实基础。
|
1天前
|
Java 开发者 UED
【揭秘Java编程新境界】事件驱动:如何在Java中捕捉每一个关键瞬间?
【8月更文挑战第30天】事件驱动编程是一种编程范式,使程序能在事件发生时响应,而非按严格顺序执行。本文介绍Java中的事件驱动编程,包括基本概念、优势及其实现方法。通过事件监听器和事件对象,Java能够高效处理GUI、网络编程和游戏开发中的各种事件。文中还提供了创建事件监听器、自定义事件及处理多个事件源的示例代码,帮助读者更好地理解和应用这一强大的编程范式。
|
3天前
|
Java 程序员 编译器
Java编程中的异常处理:理解与实践
【8月更文挑战第28天】在Java的世界中,异常是程序运行中不可避免的一部分。它们像是旅途中的路障,挑战着程序员的智慧和耐心。本文将带你走进Java的异常处理机制,从基础概念到高级应用,我们将一起探索如何优雅地处理这些不请自来的挑战者。你将学习到如何捕获、处理以及预防异常,确保你的代码像经验丰富的旅行者一样,即使在最崎岖的道路上也能从容前行。
|
4天前
|
Java 程序员 开发者
Java编程中的异常处理:从基础到进阶
【8月更文挑战第27天】在Java的世界中,异常处理是维护程序健壮性的关键。本文将带你从异常处理的基本概念出发,深入探讨如何优雅地管理错误和异常,确保你的代码不仅能够应对预料之外的情况,还能提供清晰的调试信息。我们将一起探索try-catch-finally语句的细节,了解如何自定义异常,以及最佳实践来优化你的异常处理策略。准备好了吗?让我们一起潜入Java异常处理的深海,揭开它的神秘面纱。
|
3天前
|
存储 Java
Java编程中的对象序列化与反序列化
【8月更文挑战第28天】在Java世界中,对象序列化与反序列化是数据持久化和网络传输的关键技术。本文将深入浅出地探讨这一过程,带你领略其背后的原理及应用,让你的程序在数据的海洋中自由航行。
下一篇
云函数