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) {
    // 定义arr1
    int[] 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;

    // 输出 arr1
    System.out.println("====arr1 的元素====");
    for(int i = 0; i < arr1.length; i++) {
        System.out.println(arr1[i]);
    }
    // 输出 arr2
    System.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];
    // 逆序遍历 arr
    for(int i = arr.length - 1, j = 0; i >= 0; i--, j++) {
        arr2[j] = arr[i];
    }
    // 让 arr 指向 arr2 数据空间, 此时 arr 原来的数据空间就没有变量引用,会被当做垃圾,销毁
    arr = arr2;

    // 输出 arr
    System.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");
    }
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TypeScript学习日志-第二十三天(装饰器Decorator)

装饰器Decorator 一、类装饰器 ClassDecorator 其中返回的 target 是 Http 的构造函数&#xff0c;有了构造函数就不会去破坏其自身原有的结构&#xff0c;当我们 Http 里面有多个属性或者方法的&#xff0c;当是我们不想看或者改变它&#xff0c;这时候可以在构造函数中增加即…

【Mybatis操作数据库】入门(一)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MyBatis框架】 本专栏旨在分享MyBatis框架的学习笔记&#xff0c;如有错误定当洗耳恭听&#xff0c;欢迎大家在评论区交流讨论&#x1f…

59岁前TVB男拳王内地登台疑黑面 被批耍大牌

现年59岁的郭政鸿在2015年离巢TVB后转往内地发展&#xff0c;密密拍剧、登台及直播带货&#xff0c;短短几年就已经储够钱&#xff0c;斥资过千万买楼&#xff0c;成功上车做业主&#xff0c;可见收入丰厚。 早前郭政鸿现身顺德&#xff0c;在酒吧登台唱歌&#xff0c;有网民上…

《铁路出行更便捷:火车票预定审批系统的设计与应用》

在现代化的铁路交通管理中&#xff0c;火车票预定审批系统扮演着至关重要的角色。它不仅能够有效管理员工出差、培训等需要乘坐火车的行程&#xff0c;还能够提高审批效率&#xff0c;减少人力成本&#xff0c;确保出行安全。本文将探讨火车票预定审批系统的设计原则和应用场景…

计算机毕业设计Python+Spark知识图谱医生推荐系统 医生门诊预测系统 医生数据分析 医生可视化 医疗数据分析 医生爬虫 大数据毕业设计 机器学习

摘 要 随着我国社会经济发展水平的不断提高&#xff0c;人们的物质生活水平也有了很大的改善&#xff0c;越来越多的人不满足于当前的医疗服务质量&#xff0c;由于地域和空间的限制&#xff0c;医疗资源不平衡&#xff0c;无法实现全民共享。针对当今社会中存在的求医难的问题…

智能家居2 -- 实现网络控制模块

这一模块的思路和前面的语言控制模块很相似&#xff0c;差别只是调用TCP 去控制 废话少说&#xff0c;放码过来 增添/修改代码 socket_interface.c #include <pthread.h>#include "socket_interface.h" #include "control.h" #include "socke…

【教程】超简单!如何将“在VSCode中打开”添加到右键菜单中

按照以下步骤进行操作&#xff1a; 打开注册表编辑器&#xff1a; 按下 Win R 组合键打开运行对话框。输入 regedit 并按下 Enter 键打开注册表编辑器。 导航到适当的注册表项&#xff1a; 转到以下注册表项&#xff1a;HKEY_CLASSES_ROOT\Directory\Background\shell 创建…

26版SPSS操作教程(高级教程第十九章)

目录 前言 粉丝及官方意见说明 第十九章一些学习笔记 第十九章一些操作方法 树模型、随机森林与最近邻元素法 树模型 数据准备 具体操作 结果解释 对案例的进一步分析 结果解释 考虑应用模型时的成本与收益 保存新数据 在选项中看错误分类成本和利润 结果解释…

【管理篇】如何管理情绪?

目录标题 为什么要特别关注激动和愤怒两种情绪呢&#xff1f;管理自己的情绪大致的步骤三层脑结构爬行脑情绪脑视觉脑 大家说的情绪管理&#xff0c;基本上都是对于情绪激动、生气甚至是愤怒的管理&#xff1b;日常所说的情绪化&#xff0c;一般也是指某个人特别容易情绪激动&a…

Gitlab自动化测试的配置

1. 代码分支命名规范检测 Setting → Repository → Push rules → Branch name&#xff0c;添加分支命名规范对应的正则表达式。如&#xff1a; ^(Release|Tag|Develop|Feature)_._.|Main$ 表示分支名只能以以下关键字之一开头&#xff1a;Release、Tag、Develop和Feature。 …

基于模糊控制的AMT自动变速汽车换档智能控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于模糊控制的AMT自动变速汽车换档智能控制系统simulink建模与仿真。 2.系统仿真结果 输入的V&#xff0c;Ac&#xff0c;a 输出的档位&#xff1a; 3.核心程序与模型 版…

【BST】Behavior Sequence Transformer for E-commerceRecommendation in Alibaba

一、提出背景 传统的Embedding&MLP模型结构将原始特征嵌入到低维向量中&#xff0c;然后将其concat后输入MLP进行最终推荐。DIN提出使用注意力机制来捕获候选项与用户先前点击的项之间的相似性。 然而&#xff0c;大多数这些工作只是连接不同的特征&#xff0c;而没有捕获用…

通过 Java 操作 redis -- hash 哈希表基本命令

目录 使用命令 hset&#xff0c;hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys&#xff0c;hvals 使用命令 hmget&#xff0c;hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis&#xff0c;首先要连接上 redis 服务…

AVL Cruise与Simulink联合仿真(通过MATLAB DLL方式)

最近毕业设计需要用到AVL Cruise与Simulink进行联合仿真&#xff0c;分析汽车模型的经济性。下面介绍一下我所知的AVL Cruise与Simulink联合仿真的几种方式&#xff0c;它们各自的优缺点&#xff0c;以及DLL方式联合仿真的具体配置过程。我这里用的MATLAB软件版本是2021a&#…

运行Spring Boot项目失败?显示java: 无法访问org.springframework.boot.SpringApplication,让我来看看~

idea项目运行报错截图&#xff1a; &#xff08;1&#xff09;查看错误提示“类文件具有错误的版本 61.0, 应为 52.0”&#xff0c;61.0对应的是jdk17&#xff0c;52.0对应1.8。 通过这个网址可以查询版本&#xff1a; https://stackoverflow.com/questions/9170832/list-of-ja…

Linux文本三剑客

文章目录 一、文本搜索工具--grep1、简介2、工作原理3、语法格式4、选项介绍5、实例测试5.1、-i选项5.2、-v选项5.3、-n选项5.4、-c选项5.5、-o选项5.6、-B选项5.7、-A选项5.8、-C选项5.9、-w选项5.10、-E选项5.11、-e选项 二、流编辑器--sed1、简介2、工作原理3、语法格式4、选…

AI换脸原理(6)——人脸分割介绍

一、介绍 人脸分割是计算机视觉和图像处理领域的一项重要任务,它主要涉及到将图像中的人脸区域从背景或其他非人脸区域中分离出来。这一技术具有广泛的应用场景,如人脸识别、图像编辑、虚拟背景替换等。 在计算机视觉(CV)领域,经典的分割技术可以主要划分为三类:语义分…

程序员侠李飞

李飞&#xff0c;这位程序员侠&#xff0c;肩负着消灭黑暗势力的使命。他的代码如同一把利剑&#xff0c;切割着虚拟世界中的恶意程序&#xff0c;保护着数字领域的和平。他的键盘敲击声如同战鼓的轰鸣&#xff0c;警示着那些企图侵入系统的黑客。在代码的世界里&#xff0c;他…

【离散数学】集合上二元关系性质判定的实现(c语言实现)

实验要求 关系矩阵的初始化和打印 我们将关系矩阵存入一个二维数组中&#xff0c;因为集合元素个数不会超过5个所以就用一个5行5列二维数组来表示。 在我们得到了集合元素个数之后我们就可以对数组进行0,1随机赋值 //初始关系矩阵 void init_matrix(int array[][5], int n) {…

后端开发面经系列 -- 地平线C++一面

地平线C一面 公众号&#xff1a;阿Q技术站 来源&#xff1a;https://www.nowcoder.com/discuss/608452700895711232 1、分布式事务是否了解&#xff1f; 分布式事务是指涉及多个数据库或应用之间的事务操作&#xff0c;需要确保这些操作要么全部成功&#xff0c;要么全部失败…