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工具类
数组常见异常

目录
相关文章
|
30天前
|
存储 Java 计算机视觉
Java二维数组的使用技巧与实例解析
本文详细介绍了Java中二维数组的使用方法
47 15
|
30天前
|
前端开发 JavaScript Java
Java构建工具-maven的复习笔记【适用于复习】
这篇文档由「潜意识Java」创作,主要介绍Maven的相关知识。内容涵盖Maven的基本概念、作用、项目导入步骤、依赖管理(包括依赖配置、代码示例、总结)、依赖传递、依赖范围以及依赖的生命周期等七个方面。作者擅长前端开发,秉持“得之坦然,失之淡然”的座右铭。期待您的点赞、关注和收藏,这将是作者持续创作的动力! [个人主页](https://blog.csdn.net/weixin_73355603?spm=1000.2115.3001.5343)
42 3
|
2月前
|
Java 程序员
Java编程中的异常处理:从基础到高级
在Java的世界中,异常处理是代码健壮性的守护神。本文将带你从异常的基本概念出发,逐步深入到高级用法,探索如何优雅地处理程序中的错误和异常情况。通过实际案例,我们将一起学习如何编写更可靠、更易于维护的Java代码。准备好了吗?让我们一起踏上这段旅程,解锁Java异常处理的秘密!
|
30天前
|
存储 Java 开发者
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
本文详细介绍了 Java 中 `toString()` 方法的重写技巧及其重要
51 10
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
|
2月前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
2月前
|
算法 Java 调度
java并发编程中Monitor里的waitSet和EntryList都是做什么的
在Java并发编程中,Monitor内部包含两个重要队列:等待集(Wait Set)和入口列表(Entry List)。Wait Set用于线程的条件等待和协作,线程调用`wait()`后进入此集合,通过`notify()`或`notifyAll()`唤醒。Entry List则管理锁的竞争,未能获取锁的线程在此排队,等待锁释放后重新竞争。理解两者区别有助于设计高效的多线程程序。 - **Wait Set**:线程调用`wait()`后进入,等待条件满足被唤醒,需重新竞争锁。 - **Entry List**:多个线程竞争锁时,未获锁的线程在此排队,等待锁释放后获取锁继续执行。
87 12
|
2月前
|
存储 安全 Java
Java多线程编程秘籍:各种方案一网打尽,不要错过!
Java 中实现多线程的方式主要有四种:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口和使用线程池。每种方式各有优缺点,适用于不同的场景。继承 Thread 类最简单,实现 Runnable 接口更灵活,Callable 接口支持返回结果,线程池则便于管理和复用线程。实际应用中可根据需求选择合适的方式。此外,还介绍了多线程相关的常见面试问题及答案,涵盖线程概念、线程安全、线程池等知识点。
234 2
|
2月前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####
|
2月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)