###13遍历数组
​ * A:遍历数组
​ * 在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历
​ * B:练习
​ public class ArrayDemo04 {
​ public static void main(String[] args) {
​ int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组
​ // 使用for循环遍历数组的元素
​ for (int i = 0; i < arr.length; i++) {
​ System.out.println(arr[i]); // 通过索引访问元素
​ }
​ }
​ }
​ 上述代码中,定义一个长度为5的数组arr,数组的角标为0~4。由于for循环中定义的变量i的值在循环过程中为0~4,因此可以作为索引,依次去访问数组中的元素,并将元素的值打印出来

###14数组中常见的异常
​ * A: 数组操作中,常见的两个异常
​ 数组的索引越界异常
​ 空指针异常

* B: 练习
public class ArrayDemo_4{
public static void main(String[] args){
//数组的索引越界异常
//int[] arr = {5,2,1};
//数组中3个元素,索引 0,1,2
//System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3

//空指针异常
int[] arr2 = {1,5,8};
System.out.println(arr2[2]);
arr2 = null; // arr2 不在保存数组的地址了
System.out.println(arr2[2]);//java.lang.NullPointerException
}
}

###15数组最值
​ * A: 数组获取最值的原理思想
​ * 定义数组的第一个元素arr[0]为最大值;循环arr数组,判断如果有比arr[0] 大的就交换,直到arr数组遍历完毕,那么arr[0]中就保存了最大的元素

###16数组获取最值代码实现
​ * A: 代码实现
​ public class ArrayDemo05 {
​ public static void main(String[] args) {
​ int[] arr = { 4, 1, 6, 3, 9, 8 }; // 定义一个数组
​ int max = arr[0]; // 定义变量max用于记住最大数,首先假设第一个元素为最大值
​ // 下面通过一个for循环遍历数组中的元素
​ for (int x = 1; x < arr.length; x++) {
​ if (arr[x] > max) { // 比较 arr[x]的值是否大于max
​ max = arr[x]; // 条件成立,将arr[x]的值赋给max
​ }
​ }
​ System.out.println("max=" + max); // 打印最大值
​ }
​ }

###17二维数组的定义
​ * A 二维数组的作用
​ * 要统计一个学校各个班级学生的考试成绩,又该如何实现呢?
​ * 这时就需要用到多维数组,多维数组可以简单地理解为在数组中嵌套数组。
​ * B 定义格式
​ * a 第一种定义格式:
​ * int[][] arr = new int[3][4];
​ * 上面的代码相当于定义了一个3*4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组
​ * b 第二种定义格式
​ * int[][] arr = new int[3][];
​ * 第二种方式和第一种类似,只是数组中每个元素的长度不确定
​ * c 第三种定义格式
​ * int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
​ * 二维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9}

###18二维数组元素的访问
​ * A: 二维数组的访问
​ * 案例:
​ class ArrayDemo08 {
​ public static void main(String[] args){

//定义二维数组的方式
int[][] arr = new int[3][4];
System.out.println( arr );
System.out.println("二维数组的长度: " + arr.length);
//获取二维数组的3个元素
System.out.println( arr[0] );
System.out.println( arr[1] );
System.out.println( arr[2] );

System.out.println("打印第一个一维数组的元素值");
System.out.println( arr[0][0] );
System.out.println( arr[0][1] );//访问的为二维数组中第1个一维数组的第2个元素
System.out.println( arr[0][2] );
System.out.println( arr[0][3] );

System.out.println("打印第二个一维数组的元素值");
System.out.println( arr[1][0] );
System.out.println( arr[1][1] );
System.out.println( arr[1][2] );
System.out.println( arr[1][3] );

System.out.println("打印第三个一维数组的元素值");
System.out.println( arr[2][0] );
System.out.println( arr[2][1] );
System.out.println( arr[2][2] );
System.out.println( arr[2][3] );
}
}

###19二维数组内存图
​ * A: 二维数组内存图
​ * 举例:int[][] arr = new int[3][2];
​ * 外层数组长在内存开辟连续的3个大的内存空间,每一个内存空间都对应的有地址值
​ * 每一个大内存空间里又开辟连续的两个小的内存空间.

###20二维数组的定义和访问
​ * A: 二维数组的定义和访问
​ * 格式1:
​ * int[][] arr = new int[3][]; 不推荐
​ * 格式2
​ * int[][] arr = {{1,2,4},{4,7},{0,9,3}};
​ *
​ * B: 二维数组的访问
​ 举例:int[][] arr = {{1,2,4},{5,8,7},{0,9,3}};
​ 想要打印数组中7这个元素需要先找到大的元素索引{5,7} 索引为2 ,在找7在{5,7}中的索引2
​ 那么结果为 arr[2][2] 第一个[2]代表大数组中{5,8,7}这个元素索引
​ 第二个[2]代表{5,8,7}中7元素的索引

###22二维数组的遍历
​ * A:二维数组遍历
​ int[][] arr = {{1,2,4},{4,7},{0,9,3}};
先使用for循环遍历arr这个二维数组,得到每一个元素为arr[i]为一维数组
​ 再外层for循环中嵌套一个for循环遍历每一个一维数组arr[i],得到每一元素

* B:举例:遍历二维数组
public class ArrayArrayDemo_2{
public static void main(String[] args){
int[][] arr = { {1,2,3},{4,5},{6,7,8,9},{0} };

//外循环,遍历二维数组
for(int i = 0 ; i < arr.length ;i++){
//内循环,遍历每个一维数组 arr[0] arr[1] arr[i]
for(int j = 0 ; j < arr[i].length; j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
}

* C:二维数组累加求和
class ArrayDemo09 {
public static void main(String[] args){
int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };
int sum2 = 0;
for (int i=0; i<arr2.length; i++) {
for (int j=0; j<arr2[i].length; j++) {
//System.out.println(arr2[i][j])
sum2 += arr2[i][j];
}
}
System.out.println("sum2= "+ sum2);
}
}

###23二维数组的求和练习
​ * A 例如要统计一个公司三个销售小组中每个小组的总销售额以及整个公司的销售额。如下所示
​ * 第一小组销售额为{11, 12}万元
​ * 第二小组销售额为{21, 22, 23}万元
​ * 第三小组销售额为{31, 32, 33, 34}万元。

* B 代码实现
public class ArrayDemo10 {
public static void main(String[] args) {
int[][] arr = new int[3][]; // 定义一个长度为3的二维数组
arr[0] = new int[] { 11, 12 }; // 为数组的元素赋值
arr[1] = new int[] { 21, 22, 23 };
arr[2] = new int[] { 31, 32, 33, 34 };
int sum = 0; // 定义变量记录总销售额
for (int i = 0; i < arr.length; i++) { // 遍历数组元素
int groupSum = 0; // 定义变量记录小组销售总额
for (int j = 0; j < arr[i].length; j++) { // 遍历小组内每个人的销售额
groupSum = groupSum + arr[i][j];
}
sum = sum + groupSum; // 累加小组销售额
System.out.println("第" + (i + 1) + "小组销售额为:" + groupSum + " 万元");
}
System.out.println("总销售额为: " + sum + " 万元");
}
}

###24随机点名器案例分析
​ * A 随机点名器案例分析

* B: 需求
* 随机点名器,即在全班同学中随机的打印出一名同学名字。

* C:分析:
* 1)定义数组存数全班同学
* 2)生成随机数范围0 到 数组长度-1
* 3)根据这个索引找到数组中的同学名称

###25随机点名器代码实现
​ * A: 分析
​ 随机点名器:
​ 1 存储姓名
​ 2. 预览所有人的姓名
​ 3. 随机出一个人的姓名
​ * B 代码实现
​ import java.util.Random;
​ public class CallName{
​ public static void main(String[] args){
​ //存储姓名,姓名存储到数组中
​ //数组存储姓名,姓名的数据类型,String
​ String[] names = {"张三","李四","王五","李蕾","韩梅梅","小名","老王","小华","约翰逊","爱丽丝"};

//预览: 遍历数组,打印所有姓名
for(int i = 0 ; i < names.length ; i++){
System.out.println(names[i]);
}
System.out.println("=============");

//随机出一个人的名
//利用随机数,生成一个整数,作为索引,到数组中找到对应的元素
Random ran = new Random();
//随机数,范围必须是0-数组的最大索引
int index = ran.nextInt(names.length);//index 就是随机数,作为索引
System.out.println(names[index]);
}
}

###25随机点名器代码实现_2
​ * A 代码优化:
​ import java.util.Random;
​ public class CallName{
​ public static void main(String[] args){
​ String[] names = {"张三","李四","王五","李蕾","韩梅梅","小名","老王","小华","约翰逊","爱丽丝"};
​ System.out.println(names[new Random().nextInt(names.length)]);
​ }
​ }

Java语言学习day08--7月7日的更多相关文章

  1. python学习 day08 (3月13日)----函数

    函数 一.定义  def  关键字  函数名(): 函数体 函数 ---- 封装#def 关键字 # #定义后的函数就像变量 不调用是不执行的 # #函数名() ==函数的调用 def code(): ...

  2. Java语言学习day01--6月28日

    Java语言学习day01一:Java概述 1.Java语言发展史 任职于太阳微系统的 詹姆斯·高斯林 等人于1990年代初开发Java语言的雏形,最初被命名为 Oak ,目标设置在 家用电器等小型系 ...

  3. Java语言学习day02--6月29日

    Java语言学习day02###01常用的DOS命令 * A: 常用的DOS命令 * a: 打开Dos控制台 * win+r--cmd--回车 * b: 常用dos命令 * cd.. : 退回到上一级 ...

  4. Java Calendar获取年、月、日、时间

    Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...

  5. Java语言学习day32--8月07日

    ###07正则表达式邮箱地址验证 * A: 正则表达式邮箱地址验证 * a: 案例代码 public class RegexDemo2 { public static void main(String ...

  6. Java语言学习day15--7月21日

    今日内容介绍1.Eclipse开发工具2.超市库存管理系统 ###01Eclipse的下载安装 * A: Eclipse的下载安装  * a: 下载 * http://www.eclipse.org ...

  7. Java语言学习day33--8月8日

    今日内容介绍1.基本类型包装类2.System类3.Math类4.Arrays类5.大数据运算 ###01基本数据类型对象包装类概述 *A:基本数据类型对象包装类概述 *a.基本类型包装类的产生 在实 ...

  8. Java语言学习总结 扩展篇 DateFormat类

    DateFormat类 java.text .DateFormat 是 日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换:也就是可以在Date对象与String对象之间进 ...

  9. python学习 day21 (3月28日)----(抽象类 多态 nametuple dump)

    不要因为走的路太久了,而忘记了为了什么而出发. 提前作准备了吗?把思维导图的东西做了吗? 和工作了几年的人,相比,是不是相同的水平,如果要写简历的话. 一边学习,一边复习. 小就是大,少就是多. 1. ...

  10. java语言学习笔记1

    最近也在春节的节假日里,总是会有各种各样的事情出现,没有很完整的时间来学习java以及其他方面的知识. 从昨天开始有了完整的学习体系,我去娄老师推荐的极客学院网站开始学习java语言的语法.在假期之初 ...

随机推荐

  1. 论文翻译:2021_论文翻译:2018_F-T-LSTM based Complex Network for Joint Acoustic Echo Cancellation and Speech Enhancement

    论文地址:https://arxiv.53yu.com/abs/2106.07577 基于 F-T-LSTM 复杂网络的联合声学回声消除和语音增强 摘要 随着对音频通信和在线会议的需求日益增加,在包括 ...

  2. Golang之框架篇-Windows环境bee工具运行beego

    bee工具简介及好处     bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 你可以很容易的进行 beego 项目的创建.热编译.开发.测试.和部署. 强烈推荐新手或J ...

  3. Jakarta Java Mail属性参数配置

    前言 Jakarta Mail网址:https://eclipse-ee4j.github.io/mail SMTP协议可匹配的属性:https://eclipse-ee4j.github.io/ma ...

  4. Zookeeper 下 Server 工作状态?

    服务器具有四种状态,分别是 LOOKING.FOLLOWING.LEADING.OBSERVING. 1.LOOKING:寻找 Leader 状态.当服务器处于该状态时,它会认为当前集群中没有 Lea ...

  5. Java 中的编译期常量是什么?使用它又什么风险?

    公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里 的 public 可选的.实际上这些变量在编译时会被替换掉,因为编译器知道这些 变量的值,并且知道这些变 ...

  6. 信号量,semaphore源代码之我见

    信号量,Semaphore,一个限定访问线程数量的工具类,属于并发包java.util.concurrent 里面的类. Semaphore,内部提供了构造方法(包含默认的非公平信号量构造方法,已经可 ...

  7. vmware克隆Centos虚拟机网卡无法启动问题

    快速处理办法: cat /etc/sysconfig/network-scripts/ifcfg-eth0 sed -i '/UUID/d' /etc/sysconfig/network-script ...

  8. NE555脉冲模块电路

  9. 【分享】WeX5的正确打开方式(6)——数据组件初探

    本文是[WeX5的正确打开方式]系列的第6篇文章,简单介绍一下WeX5中数据组件的特性和结构形式. 数据组件的由来 上一篇 WeX5绑定机制我们实现了一个简单的记账本应用,当时所有数据都用 JSON ...

  10. 富文本编辑器CKeditor的配置和图片上传,看完不后悔

    CKeditor是一款富文本编辑器,本文将用极为简单的方式介绍一下它的使用和困扰大家很久的图片上传问题,要有耐心. 第一步:如何使用 1.官网下载https://ckeditor.com/ckedit ...