Java语言学习day08--7月7日
###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日的更多相关文章
- python学习 day08 (3月13日)----函数
函数 一.定义 def 关键字 函数名(): 函数体 函数 ---- 封装#def 关键字 # #定义后的函数就像变量 不调用是不执行的 # #函数名() ==函数的调用 def code(): ...
- Java语言学习day01--6月28日
Java语言学习day01一:Java概述 1.Java语言发展史 任职于太阳微系统的 詹姆斯·高斯林 等人于1990年代初开发Java语言的雏形,最初被命名为 Oak ,目标设置在 家用电器等小型系 ...
- Java语言学习day02--6月29日
Java语言学习day02###01常用的DOS命令 * A: 常用的DOS命令 * a: 打开Dos控制台 * win+r--cmd--回车 * b: 常用dos命令 * cd.. : 退回到上一级 ...
- Java Calendar获取年、月、日、时间
Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...
- Java语言学习day32--8月07日
###07正则表达式邮箱地址验证 * A: 正则表达式邮箱地址验证 * a: 案例代码 public class RegexDemo2 { public static void main(String ...
- Java语言学习day15--7月21日
今日内容介绍1.Eclipse开发工具2.超市库存管理系统 ###01Eclipse的下载安装 * A: Eclipse的下载安装 * a: 下载 * http://www.eclipse.org ...
- Java语言学习day33--8月8日
今日内容介绍1.基本类型包装类2.System类3.Math类4.Arrays类5.大数据运算 ###01基本数据类型对象包装类概述 *A:基本数据类型对象包装类概述 *a.基本类型包装类的产生 在实 ...
- Java语言学习总结 扩展篇 DateFormat类
DateFormat类 java.text .DateFormat 是 日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换:也就是可以在Date对象与String对象之间进 ...
- python学习 day21 (3月28日)----(抽象类 多态 nametuple dump)
不要因为走的路太久了,而忘记了为了什么而出发. 提前作准备了吗?把思维导图的东西做了吗? 和工作了几年的人,相比,是不是相同的水平,如果要写简历的话. 一边学习,一边复习. 小就是大,少就是多. 1. ...
- java语言学习笔记1
最近也在春节的节假日里,总是会有各种各样的事情出现,没有很完整的时间来学习java以及其他方面的知识. 从昨天开始有了完整的学习体系,我去娄老师推荐的极客学院网站开始学习java语言的语法.在假期之初 ...
随机推荐
- vue2.x版本中computed和watch的使用入门详解-watch篇
前言 watch顾名思义,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见的应用场景有监听路由变化,以及父组件传递给子组件的props数据的变化等 基本使用 在使用watch的时候,需要 ...
- 2、DTO(数据传输对象)
DTO:Data Transfer Object 即数据传输对象. 有些人会问这个DTO是干嘛的,不是已经有了Model实体类了么? 首先说一下,DTO是干嘛了.DTO的引入,应该说是伴随着分层架构设 ...
- Spring Boot 多模块项目创建与配置 (转)
转载:https://www.cnblogs.com/MaxElephant/p/8205234.html 最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多 ...
- 序列化接口的id有什么用?
反序列化Java对象时必须提供该对象的class文件,现在的问题是随着项目的升级,系统的class文件也会升级,Java如何保证两个class文件的兼容性? Java序列化机制允许为序列化类提供一个p ...
- python 元组tuple 增删改查操作
初始化: data_tuple = () data_tuple1 = (1,) data_tuple2 = tuple() 新增: data_tuple+data_tuple1 (data_tuple ...
- java程序如何确保多线程的运行安全?
线程的安全问题体现在: 原子性:一个或多个操作在CPU执行过程中不被中断的特性 可见性:一个线程对共享变量的修改,另一个线程能立刻看到 有序性:程序执行的顺序按照代码的先后顺序执行 导致线程存在安全问 ...
- 两个链表有一个交点,如何在时间复杂度 O(n) 和 空间复杂度 O(1) 的条件下实现?_字节跳动面试题
输入两个链表,找出它们的第一个公共结点 我们可以首先遍历两个链表得到它们的长度,就能知道哪个链表比较长, 我们可以首先遍历两个链表得到它们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个结 ...
- Flask-Script使用教程
Flask使用第三方脚本 一个干净的项目准备: 一个干净的Flask项目连接地址: https://pan.baidu.com/s/123TyVXOFvh5P7V8MbyMfDg 话不多说,上菜: 1 ...
- 『忘了再学』Shell基础 — 7、Bash基本功能(多命令顺序执行)
目录 1.多命令执行符: 2.多命令执行符&& 3.多命令执行符|| 4.&&和||联合应用 Linux系统支持多条命令顺序执行,就是我可以依次输入多条命令后,统一按E ...
- MOS管防反接电路设计
转自嵌入式单片机之家公众号 问题的提出 电源反接,会给电路造成损坏,不过,电源反接是不可避免的.所以,我们就需要给电路中加入保护电路,达到即使接反电源,也不会损坏的目的 01二极管防反接 通常情况下直 ...