当前位置: 首页 > news >正文

JAVA的学习日记DAY6

文章目录

        • 数组
          • 例子
          • 数组的使用
          • 数组的注意事项和细节
          • 练习
          • 数组赋值机制
          • 数组拷贝
          • 数组反转
          • 数组添加
        • 排序
          • 冒泡排序
        • 查找
        • 多维数组 - 二维数组
          • 二维数组的使用
          • 二维数组的遍历
          • 杨辉三角
          • 二维数组的使用细节和注意事项
          • 练习

开始每日一更!得加快速度了!

数组

数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型,即:数组就是一组数据

例子

一个养鸡场有6只鸡,它们的体重分别是3kg,5kg,1kg,3.4kg,2kg,50kg。请问这六只鸡的总体重是多少?平均体重是多少?在这里插入图片描述

数组的使用
  1. 使用方式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. 使用方式2-动态初始化

    • 先声明数组

      语法:数据类型 数组名[];也可以 数据类型[] 数组名;

      int a[]; 或者 int[] a;

    • 创建数组

      语法:数组名=new 数据类型[大小]

      a=new int[10];

      //第2种动态分配方式
      //先声明数组,再 new 分配空间
      double scores[];//声明数组,这时 scores 是 null
      scores = new double[5];//分配内存空间,可以存放数据
      
  3. 使用方式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;

数组的注意事项和细节
  1. 数组是多个相同类型数据的组合,实现对这些数据的统一管理

  2. 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用

  3. 数组创建后,如果没有赋值,有默认值;int 0, short 0, byte 0, long 0, float 0.0, double 0.0, char \u0000, boolean false, String null在这里插入图片描述

  4. 使用数组的步骤(1)声明数组并开辟空间(2)给数组各个元素赋值(3)使用数组

  5. 数组的下标是从0开始的

  6. 数组的下标必须在指定范围内使用,否则报:下标越界异常

  7. 数组属引用类型,数组型数据是对象

练习
  1. 创建一个char类型的26个元素的数组,分别放置 ‘A’ - ‘Z’.使用for循环访问所有元素并打印出来。提示:char类型数据运算’A’ + 1 -> ‘B’在这里插入图片描述

  2. 请求出一个数组int[]的最大值{4,-1,9,10,23},并得到对应的下标在这里插入图片描述

数组赋值机制
  1. 基本数据类型赋值,这个值就是具体的数据,而且互相不影响。在这里插入图片描述

  2. 数组在默认情况下是引用传递,赋的值是地址。在这里插入图片描述

数组拷贝
  • 编写代码 实现数组拷贝(内容复制):将 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 在这里插入图片描述
排序

排序是将多个数据,依指定的顺序进行排列的过程。

  1. 内部排序

    将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法)

  2. 外部排序

    数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)

冒泡排序
  • 通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。

  • 在这里插入图片描述
    冒泡排序的特点:

    • 一共有5个元素

    • 一共进行了4轮排序,可以看成是外层循环

    • 每1轮排序可以确定一个数的位置,比如第1轮排序确定最大数,第2轮排序确定第2大的数的位置,依次类推

    • 当进行比较时,如果前面的数大于后面的数,就交换

    • 每轮比较在减少4 ->3 -> 2 -> 1

      在这里插入图片描述

查找
  1. 顺序查找

    • 有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含名称 要求:如果找到了,就提示找到,并给出下标值在这里插入图片描述
  2. 二分查找(二分法,放在后面的算法中讲解)

多维数组 - 二维数组
  • 二维数组的应用场景:比如开发一个五子棋游戏,棋盘就是需要二维数组来表示在这里插入图片描述
二维数组的使用
  • 使用方式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]

    在这里插入图片描述

二维数组的使用细节和注意事项
  1. 一维数组的声明方式有:

    int[] x 或者 int x[]
    
  2. 二维数组的声明方式有:

    int[][] y 或者 int[] y[] 或者 int y[][]
    
  3. 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如:map[] []是一个二维数组,map[] [] = {{1,2},{3,4,5}},由map[0]是一个含有两个元素的一维数组,map[1]是一个含有三个元素的一维数组构成,我们也称为列数不等的二维数组。

练习
  1. 在这里插入图片描述

2.在这里插入图片描述

A. 错误,char -> String

B. 正确

C. 把 new String去掉就对了

D. 正确

E. 错误 new String[]里面不能有具体的数字

  1. 在这里插入图片描述

bar[0]默认false,bar[1]也是false,所以最后结果是blue

  1. 在这里插入图片描述

结果是1 3 5 7

  1. 在这里插入图片描述

在这里插入图片描述

  1. 在这里插入图片描述
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);}}
}

在这里插入图片描述

  1. 在这里插入图片描述

最后结果:a a

​ z z

​ 韩 韩

​ c c

  1. 在这里插入图片描述

在这里插入图片描述

相关文章:

JAVA的学习日记DAY6

文章目录 数组例子数组的使用数组的注意事项和细节练习数组赋值机制数组拷贝数组反转数组添加 排序冒泡排序 查找多维数组 - 二维数组二维数组的使用二维数组的遍历杨辉三角二维数组的使用细节和注意事项练习 开始每日一更&#xff01;得加快速度了&#xff01; 数组 数组可以…...

Grafana告警(邮件)自定义模板配置

一年前给客户部署配置过grafana&#xff0c;告警配置也是用的原始的&#xff0c;客户在使用过程中只需要一些核心点信息&#xff0c;想要实现这个就需要用Grafana的自定义告警模板以及编辑邮件模板。 通知模板 模板信息的配置中查阅了相关资料&#xff0c;自己组装了一套&…...

大话设计模式——六大基本设计原则(SOLID原则)

设计模式 定义&#xff1a;软件开发中&#xff0c;在特定上下文中解决一类常见问题的被证明为有效的最佳实践。可供其他开发者重复使用解决相似问题。 好处&#xff1a; 提高代码的可重用性&#xff0c;减少重复代码。提高代码的可维护性&#xff0c;使代码更易于理解和修改。…...

Qt | Q_PROPERTY属性和QVariant 类

一、属性基础 1、属性与数据成员相似,但是属性可使用 Qt 元对象系统的功能。他们的主要差别在于存取方式不相同,比如属性值通常使用读取函数(即函数名通常以 get 开始的函数)和设置函数(即函数名通常以 set 开始的函数)来存取其值,除此种方法外,Qt 还有其他方式存取属性值…...

力扣207.课程表

你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要学习课程 ai 则 必须 先学习课程 bi 。 例如…...

十五届web模拟题整理

模拟赛一期 1.动态的Tab栏 请在 style.css 文件中补全代码。 当用户向下滚动的高度没有超过标题栏&#xff08;即 .heading 元素&#xff09;的高度时&#xff0c;保持 Tab 栏在其原有的位置。当滚动高度超过标题栏的高度时&#xff0c;固定显示 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…...

大型网站系统架构演化

大型网站质量属性优先级&#xff1a;高性能 高可用 可维护 应变 安全 一、单体架构 应用程序&#xff0c;数据库&#xff0c;文件等所有资源都在一台服务器上。 二、垂直架构 应用和数据分离&#xff0c;使用三台服务器&#xff1a;应用服务器、文件服务器、数据服务器 应用服…...

探索Java中的栈:Stack与Deque(ArrayDeque和LinkedList)

文章目录 1. 栈&#xff08;Stack&#xff09;1.1 定义方式1.2 特点1.3 栈的层次结构 2. 双端队列&#xff08;Deque&#xff09;2.1 定义方式及继承关系2.2 特点&#xff1a;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文件&#xff08;私有仓库是http没有证书的情况下&#xff0c;需要配置&#xff09;3.2创建构建器并使用新创建的构建器 4.构建多架构镜像并推送至harbor仓库…...

【数据结构与算法】之8道顺序表与链表典型编程题心决!

个人主页&#xff1a;秋风起&#xff0c;再归来~ 数据结构与算法 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 目录 1、顺序表 1.1 合并两个有序数组 1.2 原地移除数组中所有的元素va…...

Go 源码之旅-开篇

欢迎来到《Go 源码之旅》专栏&#xff01;在这个专栏中&#xff0c;我们将深入探索 Go 编程语言的内部数据结构的工作原理&#xff0c;一起踏上一段令人兴奋的源码之旅。 我们将一步步解析关键的数据结构底层工作原理以及一些常用框架的设计原理及其源码。 无论你是初学者还是…...

spring的事件推送

本质上是设计模式中的观察者模式。 一、什么是观察者模式 观察者模式是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;其所有依赖者都会收到通知并自动更新。 二、什么是spring的事件推送 在 Spring 的事…...

计算机网络—HTTPS协议详解:工作原理、安全性及应用实践

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;ヒューマノイド—ずっと真夜中でいいのに。 1:03━━━━━━️&#x1f49f;──────── 5:06 &#x1f504; ◀️ ⏸…...

卫星遥感影像在农业方面的应用及评价

一、引言 随着科技的进步&#xff0c;卫星遥感技术在农业领域的应用越来越广泛。卫星遥感技术以其宏观、快速、准确的特点&#xff0c;为农业生产和管理提供了有力的技术支撑。本文将对卫星遥感在农业方面的应用进行详细介绍&#xff0c;并通过具体案例进行说明。 二、…...

docker pull镜像的时候指定arm平台

指定arm平台 x86平台下载arm平台的镜像包 以mysql镜像为例 docker pull --platform linux/arm64 mysqldocker images查看镜像信息 要查看Docker镜像的信息&#xff0c;可以使用docker inspect命令。这个命令会返回镜像的详细信息&#xff0c;包括其元数据和配置。 docker i…...

如何通过OceanBase V4.2 动态采样优化查询性能

OceanBase v4.2 推出了优化器动态采样的功能&#xff0c;在SQL运行过程中&#xff0c;该功能会收集需要的统计信息&#xff0c;协助优化器制定出更好的执行计划&#xff0c;进一步提升了查询性能。 影响查询性能的因素是什么&#xff1f;为何你的优化器效果不佳&#xff1f; …...

Vue3---基础1(认识,创建)

变化 相对于Vue2&#xff0c;Vue3的变化&#xff1a; 性能的提升 打包大小减少 41% 初次渲染快 55%&#xff0c;更新渲染快133% 内存减少54% 源码的升级 使用 proxy 代替 defineProperty 实现响应式 重写虚拟 DOM 的实现和 Tree-shaking TypeScript Vue3就可以更好的支持TypeSc…...

JAVA集合ArrayList

目录 ArrayList概述 add(element) 用法 add(index, element)用法 remove&#xff08;element&#xff09;用法 remove&#xff08;index&#xff09;用法 get(index)用法 set(index,element) 练习 test1 定义一个集合&#xff0c;添加字符串&#xff0c;并进行遍历&…...

Bitmap OOM

老机器Bitmap预读仍然OOM&#xff0c;无奈增加一段&#xff0c;终于不崩溃了。 if (Build.VERSION.SDK_INT < 21)size 2; 完整代码&#xff1a; Bitmap bitmap; try {//Log.e(Thread.currentThread().getStackTrace()[2] "", surl);URL url new URL(surl);…...

Chatbot Arena排行榜单实战指南:从数据采集到模型优化

Chatbot Arena排行榜单实战指南&#xff1a;从数据采集到模型优化 在构建和优化自己的对话AI时&#xff0c;我们常常面临一个核心问题&#xff1a;如何客观、全面地评估它的性能&#xff1f;闭门造车式的测试往往带有主观偏见&#xff0c;而Chatbot Arena这类公开的排行榜单&a…...

Cocos解耦移动和发射模块

目标&#xff1a;玩家受到摇杆A控制移动和方向&#xff0c;发射受到摇杆B负责方向和发射 //玩家模块 ccclass(Player) export class Player extends Component {//玩家速度Speed:number 500;//玩家方向property(Vec3)PlayerDir:Vec3;//虚拟摇杆property(Node)Joystick:Node n…...

PT工具效率革命:一站式解决PT站点种子管理难题

PT工具效率革命&#xff1a;一站式解决PT站点种子管理难题 【免费下载链接】PT-Plugin-Plus PT 助手 Plus&#xff0c;为 Microsoft Edge、Google Chrome、Firefox 浏览器插件&#xff08;Web Extensions&#xff09;&#xff0c;主要用于辅助下载 PT 站的种子。 项目地址: h…...

Java 面试八股文(全网最全20w字)

一、Java 基础知识 1、Object 类相关方法 getClass 获取当前运行时对象的 Class 对象。hashCode 返回对象的 hash 码。clone 拷贝当前对象&#xff0c; 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝&#xff0c;对引用类型拷贝引用&#xff1b;深拷贝对基本类型进行…...

三层交换机vlan间互通配置

SW1&#xff08;三层交换机&#xff09;配置# 1. 创建VLAN sysname LSW1 vlan batch 100 200 300# 2. 配置接口并加入VLAN interface GigabitEthernet 0/0/4port link-type accessport default vlan 100stp disable # 关闭生成树 interface GigabitEthernet 0/0/5port link-ty…...

避坑指南:Unity物体闪烁效果Material内存泄漏问题排查(附Shader优化方案)

Unity物体闪烁效果的性能陷阱与工业级解决方案 在游戏开发中&#xff0c;物体闪烁效果是一种常见的视觉反馈手段&#xff0c;用于提示玩家可交互对象、危险区域或特殊状态。然而&#xff0c;许多开发者在使用传统实现方式时&#xff0c;往往会掉入Material内存泄漏的陷阱&#…...

3步掌握Open Props:从环境搭建到高级应用

3步掌握Open Props&#xff1a;从环境搭建到高级应用 【免费下载链接】open-props CSS custom properties to help accelerate adaptive and consistent design. 项目地址: https://gitcode.com/gh_mirrors/op/open-props Open Props是一个功能强大的CSS变量库&#xff…...

【国家级等保2.0工业网关合规缺口】:3步完成Python网关安全基线加固(含GB/T 22239-2024映射表)

第一章&#xff1a;工业Python网关安全基线合规总览工业Python网关作为OT与IT融合的关键枢纽&#xff0c;承担着协议转换、数据采集、边缘计算与远程控制等核心职能。其安全基线合规性直接关系到生产系统的可用性、完整性与保密性。依据IEC 62443-3-3、等保2.0三级及NIST SP 80…...

暴力检测新思路:如何用HL-Net和弱监督技术提升多模态识别准确率?

多模态暴力检测技术革新&#xff1a;HL-Net与弱监督学习的实战解析 暴力行为检测一直是计算机视觉和音频分析领域的重要挑战。传统的暴力检测方法往往受限于单一模态输入、高昂的标注成本以及有限的场景适应性。本文将深入探讨如何通过HL-Net架构和弱监督学习技术&#xff0c;构…...

8086汇编实战:用ZF、PF、SF标志位调试你的第一个程序(附调试截图)

8086汇编实战&#xff1a;用ZF、PF、SF标志位调试你的第一个程序&#xff08;附调试截图&#xff09; 刚接触汇编语言时&#xff0c;很多人会被那些神秘的标志位搞得一头雾水。记得我第一次在调试器里看到ZF、PF、SF这些缩写时&#xff0c;完全不明白它们有什么用——直到我在实…...