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

目录
相关文章
|
12天前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
10 0
|
12天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
14 0
|
11天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第11天】 在Java中,高效的并发编程是提升应用性能和响应能力的关键。本文将探讨Java并发的核心概念,包括线程安全、锁机制、线程池以及并发集合等,同时提供实用的编程技巧和最佳实践,帮助开发者在保证线程安全的前提下,优化程序性能。我们将通过分析常见的并发问题,如竞态条件、死锁,以及如何利用现代Java并发工具来避免这些问题,从而构建更加健壮和高效的多线程应用程序。
|
4天前
|
IDE Java 物联网
《Java 简易速速上手小册》第1章:Java 编程基础(2024 最新版)
《Java 简易速速上手小册》第1章:Java 编程基础(2024 最新版)
11 0
|
4天前
|
安全 Java 开发者
Java并发编程:深入理解Synchronized关键字
【4月更文挑战第19天】 在Java多线程编程中,为了确保数据的一致性和线程安全,我们经常需要使用到同步机制。其中,`synchronized`关键字是最为常见的一种方式,它能够保证在同一时刻只有一个线程可以访问某个对象的特定代码段。本文将深入探讨`synchronized`关键字的原理、用法以及性能影响,并通过具体示例来展示如何在Java程序中有效地应用这一技术。
|
5天前
|
安全 Java 调度
Java并发编程:深入理解线程与锁
【4月更文挑战第18天】本文探讨了Java中的线程和锁机制,包括线程的创建(通过Thread类、Runnable接口或Callable/Future)及其生命周期。Java提供多种锁机制,如`synchronized`关键字、ReentrantLock和ReadWriteLock,以确保并发访问共享资源的安全。此外,文章还介绍了高级并发工具,如Semaphore(控制并发线程数)、CountDownLatch(线程间等待)和CyclicBarrier(同步多个线程)。掌握这些知识对于编写高效、正确的并发程序至关重要。
|
6天前
|
缓存 分布式计算 监控
Java并发编程:深入理解线程池
【4月更文挑战第17天】在Java并发编程中,线程池是一种非常重要的技术,它可以有效地管理和控制线程的执行,提高系统的性能和稳定性。本文将深入探讨Java线程池的工作原理,使用方法以及在实际开发中的应用场景,帮助读者更好地理解和使用Java线程池。
|
6天前
|
Java API 数据库
深研Java异步编程:CompletableFuture与反应式编程范式的融合实践
【4月更文挑战第17天】本文探讨了Java中的CompletableFuture和反应式编程在提升异步编程体验上的作用。CompletableFuture作为Java 8引入的Future扩展,提供了一套流畅的链式API,简化异步操作,如示例所示的非阻塞数据库查询。反应式编程则关注数据流和变化传播,通过Reactor等框架实现高度响应的异步处理。两者结合,如将CompletableFuture转换为Mono或Flux,可以兼顾灵活性和资源管理,适应现代高并发环境的需求。开发者可按需选择和整合这两种技术,优化系统性能和响应能力。
|
7天前
|
缓存 监控 Java
Java并发编程:线程池与任务调度
【4月更文挑战第16天】Java并发编程中,线程池和任务调度是核心概念,能提升系统性能和响应速度。线程池通过重用线程减少创建销毁开销,如`ThreadPoolExecutor`和`ScheduledThreadPoolExecutor`。任务调度允许立即或延迟执行任务,具有灵活性。最佳实践包括合理配置线程池大小、避免过度使用线程、及时关闭线程池和处理异常。掌握这些能有效管理并发任务,避免性能瓶颈。
|
7天前
|
设计模式 运维 安全
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第15天】在Java开发中,多线程编程是提升应用程序性能和响应能力的关键手段。然而,它伴随着诸多挑战,尤其是在保证线程安全的同时如何避免性能瓶颈。本文将探讨Java并发编程的核心概念,包括同步机制、锁优化、线程池使用以及并发集合等,旨在为开发者提供实用的线程安全策略和性能优化技巧。通过实例分析和最佳实践的分享,我们的目标是帮助读者构建既高效又可靠的多线程应用。

热门文章

最新文章