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);…...
基于深度学习的人脸表情识别系统(PyQT+代码+训练数据集)
基于深度学习的人脸表情识别系统(PyQT代码训练数据集) 前言一、数据集1.1 数据集介绍1.2 数据预处理 二、模型搭建三、训练与测试3.1 模型训练3.2 模型测试 四、PyQt界面实现 前言 本项目是基于mini_Xception深度学习网络模型的人脸表情识别系统&#x…...
Qt 中的项目文件解析和命名规范
🐌博主主页:🐌倔强的大蜗牛🐌 📚专栏分类:QT❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、Qt项目文件解析 1、.pro 文件解析 2、widget.h 文件解析 3、main.cpp 文件解析 4、widget.cpp…...
【chatGPT】我:在Cadence Genus软件中,出现如下问题:......【4】
我 在Cadence Genus中,tcl代码为:foreach clk $clk_list{ set clkName [lindex $clk_list 0] set targetFreq [lindex $clk_list 1] set uncSynth [lindex $clk_list 4] set clkPeriod [lindex “%.3f” [expr 1 / $targetFreq]] … } 以上代码出现如下…...
单例模式(Singleton Pattern)在JAVA中的应用
在软件开发中,设计模式是解决特定问题的一种模板或者指南。它们是在多年的软件开发实践中总结出的有效方法。JAVA设计模式广泛应用于各种编程场景中,以提高代码的可读性、可维护性和扩展性。本文将介绍单例模式,这是一种常用的创建型设计模式…...
手把手教你创建新的OpenHarmony 三方库
创建新的三方库 创建 OpenHarmony 三方库,建议使用 Deveco Studio,并添加 ohpm 工具的环境变量到 PATH 环境变量。 创建方法 1:IDE 界面创建 在现有应用工程中,新创建 Module,选择"Static Library"模板&a…...
从零开始,如何成功进入IT行业?
0基础如何进入IT行业? 简介:对于没有任何相关背景知识的人来说,如何才能成功进入IT行业?是否有一些特定的方法或技巧可以帮助他们实现这一目标? 在当今数字化时代,IT行业无疑是一个充满活力和机遇的领域。…...
【数组】5螺旋矩阵
这里写自定义目录标题 一、题目二、解题精髓-循环不变量三、代码 一、题目 给定⼀个正整数 n,⽣成⼀个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正⽅形矩阵。 示例: 输⼊: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 二、解题精髓…...
Sora视频生成模型:开启视频创作新纪元
随着人工智能技术的飞速发展,视频生成领域也迎来了前所未有的变革。Sora视频生成模型作为这一领域的佼佼者,凭借其卓越的性能和创新的应用场景,受到了广泛的关注与好评。本文将对Sora视频生成模型进行详细介绍,带您领略其魅力所在…...
OpenAI现已普遍提供带有视觉应用程序接口的GPT-4 Turbo
OpenAI宣布,其功能强大的GPT-4 Turbo with Vision模型现已通过公司的API全面推出,为企业和开发人员将高级语言和视觉功能集成到其应用程序中开辟了新的机会。 PS:使用Wildcard享受不受网络限制的API调用,详情查看教程 继去年 9 月…...
Swift中的元组属性
在Swift中,元组属性指的是一个元组作为结构体、类或枚举的属性。可以将一个元组作为属性来存储和访问多个值。 例如,考虑以下的Person类: class Person {var name: Stringvar age: Intvar address: (String, Int)init(name: String, age: I…...
如何做淘宝客个人网站/东莞谷歌推广
CentOS 7下启动、关闭、重启、查看MySQL服务 xufengzhu 本文链接:https://blog.csdn.net/xufengzhu/article/details/81110982 1.启动命令 [rootxufeng Desktop]# service mysqld startRedirecting to /bin/systemctl start mysqld.service 2.关闭命令 […...
网站密码怎么做/在线seo优化
这是一份来自网络的代码,经过了我的修改和验证。首先我的运行环境是python3.7,需要安装pyuserinput库。直接上代码吧:#!/usr/bin/pythonimport osimport timeimport win32guiimport win32apiimport win32conimport pymouse,pykeyboardfrom py…...
成都微信微网站建设/百度推广客服电话24小时
一、Numpy Python中做科学计算的基础库,重在数值计算,多用于处理大型多维数组上的数值运算。 特点:快速、方便、科学计算的基础库 安装:pip install numpy 二、numpy创建数组(矩阵) import numpy as np…...
北京西站地铁是几号线/简述什么是seo及seo的作用
今天小白就为大家分享一些Python的基础知识,希望大家都能快速入门Python~ 1.在Python 语言中,对象是通过引用传递的。 在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值&a…...
新昌做网站/网站的seo
原文链接:https://hellogis.yuque.com/docs/share/351e9e9d-831f-47bc-a7c6-871528beb8c2?# 《Arcpy》 文章目录介绍按需开发的思路系统学习使用ArcPy的方法相关文章介绍 Arcpy是ArcGIS给出的一种地理处理处理方式,用Python实现 在ArcGIS体系中&#…...