当前位置: 首页 > 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);…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...