二维数组

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

  • 数组常见异常

Java编程基础阶段笔记 day06 二维数组的更多相关文章

  1. Java编程基础阶段笔记 day 07 面向对象编程(上)

    ​ 面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个 ...

  2. Java编程基础阶段笔记 day04 Java基础语法(下)

    day04 Java基础语法 (下) 笔记Notes要点 switch-case语句注意 switch-case题目(switchTest5) 循环执行顺序 if-else 实现3个整数排序 Stri ...

  3. Java编程基础阶段笔记 day01 Java语言概述

    ​目录内容 DOS命令 电脑配置 Java语言的特性 Java两种核心机制 Java语言环境搭建 第一个Java程序 注释 Java语句说明 编程风格 作业 常用的DOS命令 dir :    列出当 ...

  4. java基础-引用数据类型之二维数组(Array)

    java基础-引用数据类型之二维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我们学习过了Java的一维数组,所谓的二维数组就是元素是一堆一维数组的数组,换 ...

  5. “全栈2019”Java第三十一章:二维数组和多维数组详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. JAVA编程思想读书笔记(二)--容器

    接上篇JAVA编程思想读书笔记(一) 第八章.对象的容纳 No1: java提供了四种类型的集合类:Vector(矢量).BitSet(位集).Stack(堆栈).Hashtable(散列表) No2 ...

  7. java 数组基础学习(一维二维数组)

    1.一维数组 1>静态初始化:数据类型[ ] 变量名 = {元素} 例:int[ ] arr = {1,2} 动态初始化:数据类型[ ] 变量名 = new数据类型[数据长度] 例:int[ ] ...

  8. C语言笔记(二维数组与数值指针)

    一.关于二维数组和二维数组区别 (1)一维数组在内存中是连续分布存储的,同样,二维数组也是在内存连续存储的.所以从内存的角度来分析,一维数组和二维数组其实没有本质区别. (2) 二维数组可以使用一维数 ...

  9. 【Java】 剑指offer(3) 二维数组中的查找

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上 ...

随机推荐

  1. 【查虫日志】快速判断一副灰度图像中是否只有黑色和白色值(即是否为二值图像)过程中bool变量的是是非非。

    二值图像我们在图像处理过程中是经常遇到的,有的时候我们在进行一个算法处理前,需要判断下一副图像的数据是否符合二值图的需求,这个时候我们可以写个简单的函数来做个判断,比如我写了一个很简单的的代码如下: ...

  2. Binary classification - 聊聊评价指标的那些事儿【回忆篇】

    在解决分类问题的时候,可以选择的评价指标简直不要太多.但基本可以分成两2大类,我们今分别来说道说道 基于一个概率阈值判断在该阈值下预测的准确率 衡量模型整体表现(在各个阈值下)的评价指标 在说指标之前 ...

  3. 洛谷 题解 UVA658 【这不是bug,而是特性 It's not a Bug, it's a Feature!】

    [题意] 补丁在修正\(BUG\)时,有时也会引入新的\(BUG\),假定有\(n(n<=20)\)个潜在\(BUG\),和\(m(m<=100)\)个补丁,每个补丁用两个长度为\(n\) ...

  4. 浅谈Linq查询

    一.Var关键字 在学习Linq查询之前,我们先来学习var关键字的用法,看看微软官方的定义:从Visual C#3.0开始,在方法范围声明的变量可以具有隐式“类型” var.隐式类型的局部变量是强类 ...

  5. MacBook强制清除gardle缓存

    背景:在日常的工作开发中,为了方便维护一般采用gardle+Nexus的模式管理jar包,但方便的同时也会存在一些问题 例如:test-1.0.3.jar  jar包提供方修改了一些问题上传到Nexu ...

  6. springMVC java.lang.IllegalStateException: getOutputStream() has already bee

    在导出文件的时候,一直报这个错误. 网上一般的做法是out.clear();或者使用servlet或者Action返回null. 试过了这些方法都不成功. 最后直到试了在jsp重定向的方法才成功了. ...

  7. 使用@Transactional注意的问题

    @Transactional 基本原理概述 在应用系统调用声明@Transactional 的目标方法时,Spring Framework 默认使用 AOP 代理,在代码运行时生成一个代理对象,根据@ ...

  8. Git使用小技巧之免密登录

    想要获取更多文章可以访问我的博客 - 代码无止境. 小代同学在使用Git的过程中发现,每次向远程仓库推送代码的时候都需要输入账号密码.做为一个程序员,多多少少都会有偷懒的思维.那么如何才能避免每次都要 ...

  9. web安全测试必须注意的五个方面

    随着互联网的飞速发展,web应用在软件开发中所扮演的角色变得越来越重要,同时,web应用遭受着格外多的安全攻击,其原因在于,现在的网站以及在网站上运行的应用在某种意义上来说,它是所有公司或者组织的虚拟 ...

  10. Element ui colorpicker在Vue中的使用

    首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker> 在 ...