JAVA的学习日记DAY6
文章目录
- 数组
- 例子
- 数组的使用
- 数组的注意事项和细节
- 练习
- 数组赋值机制
- 数组拷贝
- 数组反转
- 数组添加
- 排序
- 冒泡排序
- 查找
- 多维数组 - 二维数组
- 二维数组的使用
- 二维数组的遍历
- 杨辉三角
- 二维数组的使用细节和注意事项
- 练习
开始每日一更!得加快速度了!
数组
数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型,即:数组就是一组数据
例子
一个养鸡场有6只鸡,它们的体重分别是3kg,5kg,1kg,3.4kg,2kg,50kg。请问这六只鸡的总体重是多少?平均体重是多少?
数组的使用
-
使用方式1-动态初始化
- 数组的定义
数组类型 数组名[] = new 数据类型[大小]
(也可以)数组类型[] 数组名 = new 数据类型[大小]
int a[] = new int[5]; //创建了一个数组,名字为a,存放5个int
说明:这是定义数组的一种方法
-
数组的引用(使用)
数组名[下标/索引] 比如:你要使用a数组的第3个数 a[2]
数组的下标从0开始
//第1种动态分配方式 double scores[] = new double[5];例子:循环输入5个成绩,保存到double数组,并输出

-
使用方式2-动态初始化
-
先声明数组
语法:数据类型 数组名[];也可以 数据类型[] 数组名;
int a[]; 或者 int[] a;
-
创建数组
语法:数组名=new 数据类型[大小]
a=new int[10];
//第2种动态分配方式 //先声明数组,再 new 分配空间 double scores[];//声明数组,这时 scores 是 null scores = new double[5];//分配内存空间,可以存放数据
-
-
使用方式3-静态初始化
-
初始化数组
语法:数据类型 数组名[] = {元素值,元素值…}
int a[] = {2,5,6,7,8,89,90,34,56}, 如果知道数组有多少元素,具体值
上面的用法相当于:int a[ ] = new int[9];
a[0] = 2; a[1] = 5; a[2] = 6; a[3] = 7; a[4] = 8;
a[5] = 89; a[6] = 90; a[7] = 34; a[8] = 56;
-
数组的注意事项和细节
-
数组是多个相同类型数据的组合,实现对这些数据的统一管理
-
数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用
-
数组创建后,如果没有赋值,有默认值;int 0, short 0, byte 0, long 0, float 0.0, double 0.0, char \u0000, boolean false, String null

-
使用数组的步骤(1)声明数组并开辟空间(2)给数组各个元素赋值(3)使用数组
-
数组的下标是从0开始的
-
数组的下标必须在指定范围内使用,否则报:下标越界异常
-
数组属引用类型,数组型数据是对象
练习
-
创建一个char类型的26个元素的数组,分别放置 ‘A’ - ‘Z’.使用for循环访问所有元素并打印出来。提示:char类型数据运算’A’ + 1 -> ‘B’

-
请求出一个数组int[]的最大值{4,-1,9,10,23},并得到对应的下标

数组赋值机制
-
基本数据类型赋值,这个值就是具体的数据,而且互相不影响。

-
数组在默认情况下是引用传递,赋的值是地址。

数组拷贝
- 编写代码 实现数组拷贝(内容复制):将 int[] arr1 = {10,20,30};拷贝到arr2数组,要求数据空间是独立的

数组反转
-
把数组的元素内容反转:arr{11,22,33,44,55,66} → {66,55,44,33,22,11}
方式1:通过找规律反转

方式2:使用逆序赋值的方式

数组添加
- 实现动态的给数组添加元素效果,实现对数组扩容
- 原始数组使用静态分配 int[] arr = {1,2,3}
- 增加的元素,直接放在数组的最后 arr = {1,2,3,4} arrNew = {1,2,3,4}
- 用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n

排序
排序是将多个数据,依指定的顺序进行排列的过程。
-
内部排序
将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法)
-
外部排序
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)
冒泡排序
-
通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。
-

冒泡排序的特点:-
一共有5个元素
-
一共进行了4轮排序,可以看成是外层循环
-
每1轮排序可以确定一个数的位置,比如第1轮排序确定最大数,第2轮排序确定第2大的数的位置,依次类推
-
当进行比较时,如果前面的数大于后面的数,就交换
-
每轮比较在减少4 ->3 -> 2 -> 1

-
查找
-
顺序查找
- 有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含名称 要求:如果找到了,就提示找到,并给出下标值

- 有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含名称 要求:如果找到了,就提示找到,并给出下标值
-
二分查找(二分法,放在后面的算法中讲解)
多维数组 - 二维数组
- 二维数组的应用场景:比如开发一个五子棋游戏,棋盘就是需要二维数组来表示

二维数组的使用
-
使用方式1:动态初始化
-
语法:类型[][] [] [] 数组名 = new 类型[大小] [大小] //第一个大小表示它包含几个一维数组,第二个大小表示每一个一维数组它的大小是多少

-
比如:int a[] [] = new int[2] [3]
-
使用演示
-
二维数组在内存的存在形式
-
-
使用方式2:动态初始化
-
先声明:类型 数组名[] [] ;
-
再定义(开辟空间)数组名 = new 类型 [大小] [大小]
int arr[][];//声明二维数组 arr = new int[2][3];//再开空间 -
赋值(有默认值,比如int 类型的就是0)
-
使用演示
-
-
使用方式3:动态初始化 - 列数不确定


-
使用方式4:静态初始化
-
定义 类型 数组名[] [] = {{值1, 值2 …}, {值1, 值2 …}, {值1, 值2 …}}
-
使用即可 [固定方式访问]
int[][] arr = {{1,1,1},{8,8,9},100}; //1.定义了一个二维数组arr //2.arr有三个元素(每个元素都是一维数组) //3.第一个一维数组有3个元素,第二个一维数组有3个元素,第三个一维数组有1个元素
-
二维数组的遍历
- 例子:int arr[] [] = {{4,6},{1,4,5,7},{-2}};遍历该二维数组,并得到和

杨辉三角
-
第一行有1个元素,第n行有n个元素
-
每一行的第一个元素和最后一个元素都是1
-
从第三行开始,对于非第一个元素和最后一个元素的元素的值,arr[i] [j]
arr[i] [j] = arr[i-1] [j] + arr[i-1] [j-1]

二维数组的使用细节和注意事项
-
一维数组的声明方式有:
int[] x 或者 int x[] -
二维数组的声明方式有:
int[][] y 或者 int[] y[] 或者 int y[][] -
二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如:map[] []是一个二维数组,map[] [] = {{1,2},{3,4,5}},由map[0]是一个含有两个元素的一维数组,map[1]是一个含有三个元素的一维数组构成,我们也称为列数不等的二维数组。
练习
2.
A. 错误,char -> String
B. 正确
C. 把 new String去掉就对了
D. 正确
E. 错误 new String[]里面不能有具体的数字
bar[0]默认false,bar[1]也是false,所以最后结果是blue
结果是1 3 5 7

public class lianxierweishuzu{public static void main(String[] args){int[] arr = new int[10];//(int)(Math.random() * 100) + 1 生产 随机数 1-100for(int i = 0; i < arr.length; i ++){arr[i] = (int)(Math.random() * 100) + 1;}System.out.println("===arr的元素情况===");for(int i = 0; i < arr.length; i ++){System.out.print(arr[i] + "\t");}System.out.println("\n===arr的元素情况(倒序)===");for(int i = arr.length - 1; i >= 0; i --){System.out.print(arr[i] + "\t");}double sum = arr[0];int max = arr[0];int maxIndex = 0;for(int i = 1; i < arr.length; i ++){sum += arr[i];//累积和if(max < arr[i]){//说明max不是最大值,就变化max = arr[i];maxIndex = i;}}System.out.println("\nmax=" + max + " maxIndex=" + maxIndex);System.out.println("\n平均值=" + (sum / arr.length));//查找数组中是否有8 -> 使用顺序查找int findNum = 8;int index = -1;//如果找到,就把下标记录到indexfor(int i = 0; i < arr.length; i ++){if(findNum == arr[i]){System.out.println("找到数" + findNum + " 下标=" + i);index = i;break;}}if(index == -1){System.out.println("没有找到数" + findNum);}}
}

最后结果:a a
z z
韩 韩
c c

相关文章:
JAVA的学习日记DAY6
文章目录 数组例子数组的使用数组的注意事项和细节练习数组赋值机制数组拷贝数组反转数组添加 排序冒泡排序 查找多维数组 - 二维数组二维数组的使用二维数组的遍历杨辉三角二维数组的使用细节和注意事项练习 开始每日一更!得加快速度了! 数组 数组可以…...
Grafana告警(邮件)自定义模板配置
一年前给客户部署配置过grafana,告警配置也是用的原始的,客户在使用过程中只需要一些核心点信息,想要实现这个就需要用Grafana的自定义告警模板以及编辑邮件模板。 通知模板 模板信息的配置中查阅了相关资料,自己组装了一套&…...
大话设计模式——六大基本设计原则(SOLID原则)
设计模式 定义:软件开发中,在特定上下文中解决一类常见问题的被证明为有效的最佳实践。可供其他开发者重复使用解决相似问题。 好处: 提高代码的可重用性,减少重复代码。提高代码的可维护性,使代码更易于理解和修改。…...
Qt | Q_PROPERTY属性和QVariant 类
一、属性基础 1、属性与数据成员相似,但是属性可使用 Qt 元对象系统的功能。他们的主要差别在于存取方式不相同,比如属性值通常使用读取函数(即函数名通常以 get 开始的函数)和设置函数(即函数名通常以 set 开始的函数)来存取其值,除此种方法外,Qt 还有其他方式存取属性值…...
力扣207.课程表
你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。 例如…...
十五届web模拟题整理
模拟赛一期 1.动态的Tab栏 请在 style.css 文件中补全代码。 当用户向下滚动的高度没有超过标题栏(即 .heading 元素)的高度时,保持 Tab 栏在其原有的位置。当滚动高度超过标题栏的高度时,固定显示 Tab 栏在网页顶部。 /* TODO…...
ubuntu20.04 安裝PX4 1.13
step1_install_depenences.sh #!/bin/bash #install gazebo 11 #install protobuf 3.19.6python3 -m pip install --upgrade pip python3 -m pip install --upgrade Pillow# 將 empy 的版本調整爲3.3.4 pip3 uninstall empy pip3 install empy3.3.4sudo apt-get update sudo ap…...
大型网站系统架构演化
大型网站质量属性优先级:高性能 高可用 可维护 应变 安全 一、单体架构 应用程序,数据库,文件等所有资源都在一台服务器上。 二、垂直架构 应用和数据分离,使用三台服务器:应用服务器、文件服务器、数据服务器 应用服…...
探索Java中的栈:Stack与Deque(ArrayDeque和LinkedList)
文章目录 1. 栈(Stack)1.1 定义方式1.2 特点1.3 栈的层次结构 2. 双端队列(Deque)2.1 定义方式及继承关系2.2 特点:2.3 ArrayDeque2.4 LinkedList2.5 Deque 的各种方法2.6 如何选择ArrayDeque和LinkedList 3. 如何选择…...
实践笔记-03 docker buildx 使用
docker buildx 使用 1.启用docker buildx2.启用 binfmt_misc3.从默认的构建器切换到多平台构建器3.1创建buildkitd.toml文件(私有仓库是http没有证书的情况下,需要配置)3.2创建构建器并使用新创建的构建器 4.构建多架构镜像并推送至harbor仓库…...
【数据结构与算法】之8道顺序表与链表典型编程题心决!
个人主页:秋风起,再归来~ 数据结构与算法 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 目录 1、顺序表 1.1 合并两个有序数组 1.2 原地移除数组中所有的元素va…...
Go 源码之旅-开篇
欢迎来到《Go 源码之旅》专栏!在这个专栏中,我们将深入探索 Go 编程语言的内部数据结构的工作原理,一起踏上一段令人兴奋的源码之旅。 我们将一步步解析关键的数据结构底层工作原理以及一些常用框架的设计原理及其源码。 无论你是初学者还是…...
spring的事件推送
本质上是设计模式中的观察者模式。 一、什么是观察者模式 观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。 二、什么是spring的事件推送 在 Spring 的事…...
计算机网络—HTTPS协议详解:工作原理、安全性及应用实践
🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:ヒューマノイド—ずっと真夜中でいいのに。 1:03━━━━━━️💟──────── 5:06 🔄 ◀️ ⏸…...
卫星遥感影像在农业方面的应用及评价
一、引言 随着科技的进步,卫星遥感技术在农业领域的应用越来越广泛。卫星遥感技术以其宏观、快速、准确的特点,为农业生产和管理提供了有力的技术支撑。本文将对卫星遥感在农业方面的应用进行详细介绍,并通过具体案例进行说明。 二、…...
docker pull镜像的时候指定arm平台
指定arm平台 x86平台下载arm平台的镜像包 以mysql镜像为例 docker pull --platform linux/arm64 mysqldocker images查看镜像信息 要查看Docker镜像的信息,可以使用docker inspect命令。这个命令会返回镜像的详细信息,包括其元数据和配置。 docker i…...
如何通过OceanBase V4.2 动态采样优化查询性能
OceanBase v4.2 推出了优化器动态采样的功能,在SQL运行过程中,该功能会收集需要的统计信息,协助优化器制定出更好的执行计划,进一步提升了查询性能。 影响查询性能的因素是什么?为何你的优化器效果不佳? …...
Vue3---基础1(认识,创建)
变化 相对于Vue2,Vue3的变化: 性能的提升 打包大小减少 41% 初次渲染快 55%,更新渲染快133% 内存减少54% 源码的升级 使用 proxy 代替 defineProperty 实现响应式 重写虚拟 DOM 的实现和 Tree-shaking TypeScript Vue3就可以更好的支持TypeSc…...
JAVA集合ArrayList
目录 ArrayList概述 add(element) 用法 add(index, element)用法 remove(element)用法 remove(index)用法 get(index)用法 set(index,element) 练习 test1 定义一个集合,添加字符串,并进行遍历&…...
Bitmap OOM
老机器Bitmap预读仍然OOM,无奈增加一段,终于不崩溃了。 if (Build.VERSION.SDK_INT < 21)size 2; 完整代码: Bitmap bitmap; try {//Log.e(Thread.currentThread().getStackTrace()[2] "", surl);URL url new URL(surl);…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...







