06-数组

1. 为什么需要数组

一个养鸡场有6只鸡,它们的体重分别是3kg,4kg,1kg,2kg,6kg,3kg。

没有数组,就需要定义六个变量,一个变量代表一只鸡的体重。

使用数组,就可以定义一个数组,统一存放六只鸡的体重。

2. 数组介绍

  • 数组用于存储固定大小的同类型数据元素的数据结构,是引用类型。
  • 数组中的每个元素都可以通过其索引(一个整数)来访问。索引从0开始,因此对于任何数组,其第一个元素的索引都是0,第二个元素的索引是1,依此类推。
  • 数组下标必须在指定范围内使用,否则报:下标越界异常。

3. 数组的使用

3.1 声明和初始化

// 声明一个整型数组
int[] arr1;
// 初始化一个包含5个整型元素的数组
arr1 = new int[5];  // 声明并初始化一个包含10个整型元素的数组
int[] arr2 = new int[10];  // 声明并初始化一个包含5个整型元素的数组
int[] arr3 = {1, 2, 3, 4, 5};  

数组创建后,如果没有赋值,有默认值

int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null 

3.2 访问数组元素

int element = arr3[2];  // 访问arr3数组的第三个元素,其值为3

3.3 遍历数组

for (int i = 0; i < arr3.length; i++) {System.out.println(arr3[i]);
}

3.4 多维数组

Java还支持多维数组,如二维数组。二维数组可以看作是一个表格或矩阵。

int[][] matrix = new int[3][4];  // 声明并初始化一个3x4的二维数组
matrix[1][2] = 5;  // 设置第二行第三列的元素为5

3.5 数组方法

Java提供了一些用于操作数组的方法,如Arrays.sort()(用于对数组进行排序)。

import java.util.Arrays;int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
Arrays.sort(arr);  // 对arr数组进行排序
System.out.println(Arrays.toString(arr));  // 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

3.6 数组赋值机制

  1. 基本数据类型赋值,这个值就是具体的数据,互相之间不影响。
  2. 数组在默认情况下是引用传递,赋的值是地址。
// 基本类型
int n1 = 10; 
int n2 = n1;
n2 = 30;// 数组
int[] arr1 = {1,2,3};
int[] arr2 = arr1;
arr2[0] = 10;

3.7 数组拷贝 

将 int[] arr1 = {10,20,30},拷贝到 arr2 数组。

代码示例


public static void main(String[] args) {// 定义arr1int[] arr1 = {10,20,30};// 创建一个新的数组 arr2,开辟新的数据空间// 为了不浪费空间,大小为 arr1.length;int[] arr2 = new int[arr1.length];// 遍历 arr1 ,把每个元素拷贝到 arr2 对应的元素位置for(int i = 0; i < arr1.length; i++) {arr2[i] = arr1[i];}// 修改 arr2, 不会对 arr1 有影响. arr2[0] = 100;// 输出 arr1System.out.println("====arr1 的元素====");for(int i = 0; i < arr1.length; i++) {System.out.println(arr1[i]);}// 输出 arr2System.out.println("====arr2 的元素====");for(int i = 0; i < arr2.length; i++) {System.out.println(arr2[i]);}
}

3.8 数组反转

把数组的元素内容反转

arr {11,22,33,44,55,66} {66, 55,44,33,22,11}

方式一:创建一个新数组,然后将原数组的内容逆序输出到新数组当中

public static void main(String[] args) {// 定义数组int[] arr = {11, 22, 33, 44, 55, 66};// 1. 先创建一个新的数组 arr2 ,大小 arr.length// 2. 逆序遍历 arr ,将 每个元素拷贝到 arr2 的元素中(顺序拷贝)int[] arr2 = new int[arr.length];// 逆序遍历 arrfor(int i = arr.length - 1, j = 0; i >= 0; i--, j++) {arr2[j] = arr[i];}// 让 arr 指向 arr2 数据空间, 此时 arr 原来的数据空间就没有变量引用,会被当做垃圾,销毁arr = arr2;// 输出 arrSystem.out.println("====arr 的元素情况=====");for(int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "\t");}
}

但是,这种方式在数据量多的时候,创建新数组浪费空间。

方式二:数组内部对称交换

public static void main(String[] args) {// 定义数组int[] arr = {11, 22, 33, 44, 55, 66};// 1. 把 arr[0] 和 arr[5] 进行交换 {66,22,33,44,55,11}// 2. 把 arr[1] 和 arr[4] 进行交换 {66,55,33,44,22,11}// 3. 把 arr[2] 和 arr[3] 进行交换 {66,55,44,33,22,11}// 每次交换时,对应的下标 是 arr[i] 和 arr[arr.length - 1 -i]int temp = 0;int len = arr.length;for( int i = 0; i < len / 2; i++) {temp = arr[len - 1 - i];arr[len - 1 - i] = arr[i];arr[i] = temp;}System.out.println("===翻转后数组===");for(int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "\t");}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/322510.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安防视频/视频汇聚系统EasyCVR视频融合云平台助力智能化酒店安防体系的搭建

一、背景需求 2024年“五一”假期&#xff0c;全国文化和旅游市场总体平稳有序。文化和旅游部6日发布数据显示&#xff0c;据文化和旅游部数据中心测算&#xff0c;全国国内旅游出游合计2.95亿人次。“五一”假期县域市场酒店预订订单同比增长68%&#xff0c;而酒店作为一个高…

Dashboard 安装部署

Dashboard 安装部署 Dashboard 安装部署 一&#xff1a;下载 二&#xff1a;部署步骤 1.镜像下载及导入 国内直接拉外网镜像会失败&#xff0c;可在境外下载镜像 查看 deployment 里的镜像版本 Dashboard Deploymentcontainers:- name: kubernetes-dashboardimage: k8s.g…

Python - 金三银四心路历程 之 数据结构与算法 刷题

目录 一.引言 二.心路历程 三.刷题经历 四.刷题历程 五.总结 一.引言 <夜深人静写算法> 是 23 年 12 月底博主打算跳槽时开始做刷题准备做的专栏&#xff0c;前后准备了大约一个月&#xff0c;刷题完毕后简单准备了项目和简历后就开始加入找工作大军了&#xff0c;最…

VISIO 画任意形状的封闭图案

** 最终要的效果 ** 1. 先用任意曲线画个圈 2. 在开发工具中&#xff0c;找到对应的&#xff0c;先点连接&#xff0c;再点修剪 3. 多余的部分删掉

组合模式(Composite)——结构型模式

组合模式(Composite)——结构型模式 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能通过通用接口像独立整体对象一样使用它们。如果应用的核心模型能用树状结构表示&#xff0c; 在应用中使用组合模式才有价值。 例如一个场景…

推荐非常方便的初始配置nginx的开源工具

官网 https://www.digitalocean.com/community/tools/nginx?global.app.langzhCN直接复制base64字符串在 /etc/nginx 目录执行&#xff0c;会自动生成配置文件&#xff0c;最后执行 使用tar解压新的压缩配置 tar -xzvf nginxconfig.io-xxx.com.tar.gz | xargs chmod 0644在…

uni-app 多列picker切换列显示对应内容

html部分&#xff1a; <view class"uni-list"><view class"uni-list-cell"><view class"uni-list-cell-left">选择用户</view><view class"uni-list-cell-db"><picker mode"multiSelector"…

三种中成药分享:舒肝健脾,脾肝同调。

三个中成药分享给大家&#xff0c;舒肝健脾&#xff0c;脾肝同调。 第一&#xff0c;【木香顺气丸】&#xff0c;它具有健脾和胃&#xff0c;镇气祛湿的功效。如果平时总感觉到身上没劲、疲惫没精神&#xff0c;四肢还很沉重&#xff0c;吃完饭肚子里总是胀气&#xff0c;伴随…

Isaac Sim 5 Ros相关(学习笔记5.8.3)

一.RGB、Depth、bbox话题发送 1.新建一个二驱示例小车 路径为Robot-Jetbot&#xff08;如果找不到也可以直接搜索Jetbot&#xff09; 2.添加Action Graph 导航栏中&#xff1a;Window - Visual Scripting - Action Graph&#xff0c;建立一个工作区&#xff0c;这个工作区中…

Python AI库pandas读写数据库的应用操作——以sqlite3为例

Python AI库pandas读写数据库的应用操作——以sqlite3为例 本文默认读者具备以下技能&#xff1a; 熟悉python基础知识&#xff0c;vscode或其它编辑工具 已阅读Pandas基础操作文章,了解pandas常见操作 具备自主扩展学习能力 在数据分析和人工智能领域&#xff0c;pandas库和s…

Llama 3 超级课堂

https://github.com/SmartFlowAI/Llama3-Tutorial/tree/main 第一节作业 streamlit run web_demo.py /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct

Context capture/Pix4Dmapper/AutoCAD/CASS/EPS软件的安装流程与使用方法;土方量计算;无人机摄影测量数据处理

目录 专题一 无人机摄影测量技术应用现状及其发展 专题二 基本原理和关键技术讲解 专题三 无人机影像外业数据获取 专题四 数据处理环境建立与软件熟悉 专题五 GNSS数据土方量计算 专题六 基于无人机影像数据的正射影像制作 专题七 基于无人机影像数据的三维模型制作 专…

DUX 主题 版本:8.2 WordPress主题优化版

主题下载地址&#xff1a;DUX 主题优化版.zip 支持夜间模式、快讯、专题、百度收录、人机验证、多级分类筛选&#xff0c;适用于垂直站点、科技博客、个人站&#xff0c;扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、自动缩略图

Linux 基础命令

目录 1.ls 2. cd 3. tree 4. touch 5.mkdir / rmdir ​编辑 6.rm 7.man 8.find which whereis 9.cat more less 10 date cal 11.grep 12.sort uniq 13.zip/unzip 14 tar 15.bc 16.uname 17.热键 在了解Linux基本操作之前&#xff0c;我们首先要了解Linux的一些最…

【人工智能基础】RNN实验

一、RNN特性 权重共享 wordi weight bais 持久记忆单元 wordi weightword baisword hi weighth baish 二、公式化表达 ht f(ht - 1, xt) ht tanh(Whhht - 1 Wxhxt) yt Whyht 三、RNN网络正弦波波形预测 环境准备 import numpy as np import torch from tor…

二叉树的前序、中序、后序遍历的C++实现

二叉树的前序、中序、后序 遍历属于深度优先搜索方式&#xff0c;本文使用递归法实现前序、中序、后序的遍历方法&#xff0c;代码如下&#xff1a; #include <iostream> #include <vector>struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int …

多角度解析动态住宅IP的多元化应用

动态住宅IP指的是在住宅网络中使用的、能够随时间或用户需求配置的IP地址&#xff0c;能够根据网络状况自动调整&#xff0c;为用户提供更加灵活、高效的上网体验。这种IP地址不是固定不变的&#xff0c;而是会定期自动更换&#xff0c;这种IP地址也让使用者的安全得以保障。 作…

OpenSPG docker 安装教程

文章目录 前言自述 一、OpenSPG1.介绍 二、安装步骤1.安装服务端2.客户端部署 前言 自述 我最近是想结合chatglm3-6b和知识图谱做一个垂直领域的技术规范的问答系统&#xff0c;过程中也遇到了很多困难&#xff0c;在模型微调上&#xff0c;在数据集收集整理上&#xff0c;在知…

日志审计系统在提高网络安全方面具有哪些重要的作用

随着信息技术的飞速发展&#xff0c;我们正处于一个高度互联、数据驱动的网络时代。在这个时代&#xff0c;日志审计系统作为网络安全和信息管理的重要工具&#xff0c;发挥着至关重要的作用。下面德迅云安全就详细介绍下关于日志审计系统在当今网络时代的重要性。 一、什么是日…

RabbitMQ(Docker 单机部署)

序言 本文给大家介绍如何使用 Docker 单机部署 RabbitMQ 并与 SpringBoot 整合使用。 一、部署流程 拉取镜像 docker pull rabbitmq:3-management镜像拉取成功之后使用下面命令启动 rabbitmq 容器 docker run \# 指定用户名-e RABBITMQ_DEFAULT_USERusername \# 指定密码-e R…