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

Java中的数组

文章目录

  • 前言
  • 1. 什么是数组
  • 2. 数组的定义
    • 2.1 数组的静态初始化
    • 2.2 数组的动态初始化
  • 3. 数组的元素访问
  • 4. 数组的遍历

前言

我是一名来自延边大学人工智能专业的热爱街舞的大四学生,目前在学习Java,我会根据我的学习路线给大家分享学习经验,这章我们学习Java中的数组—


1. 什么是数组

数组其实就是一个容器,用来储存同种类型的数据的。

例如:想要存储一些int类型的数据

int[] array = {20,10,30,50,40};

想要存储一些String类型的数据

String[] names = {"Hoan", "Hozin", "Jin"};

如果遇到批量数据的存储和操作时,数组比变量更适合

2. 数组的定义

数组有两种初始化的方式,一种是静态初始化、一种是动态初始化。

2.1 数组的静态初始化

所谓静态初始化指的是:在定义数组时直接给数组中的数据赋值。
1. 静态初始化标准格式:

数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3};

//定义数组,用来存储多个年龄
int[] ages = new int[]{12, 24, 36}
//定义数组,用来存储多个成绩
double[] scores = new double[]{89.9, 99.5, 59.5, 88.0};

2. 静态初始化简化格式

数据类型[] 变量名 = {元素1,元素2,元素3};

//定义数组,用来存储多个年龄
int[] ages = {12, 24, 36}
//定义数组,用来存储多个成绩
double[] scores = {89.9, 99.5, 59.5, 88.0};

注意事项:
1.定义数组是的声明有两种方式
int[] ages = {12, 24, 36};
int ages[] = {12, 24, 36}
但是基本上都是使用第一种,第二种了解即可
2.静态初始化的两种格式,也是使用第二种方式居多

练习案例:
需求:某部门5名员工的销售额分别是:16、26、36、6、100,请计算出他们部门的总销售额。

分析:
1.看到有16、26、36、6、100这5个数据数据,而且数据值很明确;
(1)想到,可以使用数组静态初始化把这5个数据存起来

2.请计算出他们部门的总销售额(这不就是求数组中数据的和吗?)
(2)必须先将数组中所有的元素遍历出来
(3)想要求和,得先有一个求和变量sum
(4)再将每一个元素和求和变量sum进行累加(求和思想)

// 1、定义一个数组存储5名员工的销售额
//索引          0   1    2  3   4
int[] money = {16, 26, 36, 6, 100};

// 3、定义一个变量用于累加求和
int sum = 0;

// 2、遍历这个数组中的每个数据。
for (int i = 0; i < money.length; i++) {
    // i = 0  1  2  3  4
    sum += money[i];
}
System.out.println("员工的销售总额:" + sum);

2.2 数组的动态初始化

刚才介绍了数组定义的第一种方式,第二种方式是动态初始化。动态初始化不需要我们写出具体的元素,而是指定元素类型和长度就行

//数据类型[]  数组名 = new 数据类型[长度];
int[] arr = new int[3];

这样就创建了一个长度为3的数组了,它会根据你所甚至的数组类型,给数组中的元素赋予默认值

数据类型具体类型默认值
基本类型byte,short,int,long,char0
基本类型float,double0.0
基本类型booleanfalse
引用类型数组,String,类,接口null

练习案例:
需求:
某歌唱比赛,需要开发一个系统:可以录入6名评委的打分,录入完毕后立即输出平均分做
选手得分

分析:
1.需要录入6名评委的分数,可以用一个数组来保存。
因为在评委没有录入分数之前,还不确定数组中应该存哪些数据。
所以可以使用数组的动态初始化
2.遍历数组中的每一个位置,并录入分数,将分数存入数组中
3.遍历数组中的每一个元素,对元素求和

// 1、定义一个动态初始化的数组,负责后期存储6个评委的打分。
double[] scores = new double[6];

Scanner sc  = new Scanner(System.in);

// 2、遍历数组中的每个位置,录入评委的分数,存入到数组中去
for (int i = 0; i < scores.length; i++) {
    // i = 0 1 2 3 4 5
    System.out.println("请您输入当前第" + (i + 1) +"个评委的分数:");
    double score = sc.nextDouble();
    scores[i] = score;
}

// 3、遍历数组中的每个元素进行求和
double sum  = 0;
for (int i = 0; i < scores.length; i++) {
    sum += scores[i];
}
System.out.println("选手最终得分是:" + sum / scores.length);

3. 数组的元素访问

数据存储在数组当中,我们该如果访问其中的元素呢
这里我们需要先了解一个概念:索引
索引:可以理解为是数组的编号 ,它是从0开始的
需要通过 数组名[索引]的方式来得到具体的元素

通过代码来演示:

//索引:	   0   1   2
int[] arr = {12, 24, 36};
// 1、访问数组的全部数据
System.out.println(arr[0]); //12
System.out.println(arr[1]); //24
System.out.println(arr[2]); //36
//下面代码没有3索引,会出现ArrayIndexOutOfBoundsException 索引越界异常
//System.out.println(arr[3]); 

// 2、修改数组中的数据
arr[0] = 66;
arr[2] = 100;
System.out.println(arr[0]); //66
System.out.println(arr[1]); 0
System.out.println(arr[2]); //100

// 3、访问数组的元素个数:数组名.length
System.out.println(arr.length);

// 技巧:获取数组的最大索引: arr.length - 1(前提是数组中存在数据)
System.out.println(arr.length - 1);

int[] arr2 = {};
System.out.println(arr2.length - 1);

4. 数组的遍历

当数组中存储了很多元素的情况下,如果我们一个一个手动的去取值,会非常非常麻烦,所以我们需要用for循环来对数据做遍历操作,就可以获取到所有元素

int[] ages = {12, 24, 36};
for (int i = 0; i < ages.length; i++) {
    // i的取值 = 0,1,2
    System.out.println(ages[i]); 
}

注意事项:
1.索引是从0开始所以 for循环中的i是从0开始,终止条件也不包含ages.length这个索引,最大索引数是数组数量-1


http://www.kler.cn/a/372026.html

相关文章:

  • 【总目录】
  • 【Docker】构建Linux云桌面环境
  • doris 表结构批量导出
  • 标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能...
  • 深度了解flink(八) JobManager(2)initializeServices剖析
  • 安卓14上蓝牙调用SystemProperties.set(),解决找不到SystemProperties.set()的问题
  • PyTorch nn.Conv2d 空洞卷积
  • Git 企业级开发模型
  • 深入理解所有权与借用——所有权模型的实用示例
  • QT 机器视觉 (3. 虚拟相机SDK、测试工具)
  • 【C语言】在线编译器——lightly
  • 什么是AdaBoost
  • EHOME视频平台EasyCVR私有化部署视频平台视频监控系统画面花屏、马赛克、拖影问题快速解决方法
  • WebSocket与Socket
  • sudo apt install jupyter-notebook安装notebook失败E: Aborting install.
  • 计算机视觉-霍夫变换直线检测实验报告
  • JMeter安装
  • Linux云计算 |【第五阶段】CLOUD-DAY4
  • 基于阿里云服务的移动应用日志管理方案—日志的上传、下载、存档等
  • JS补原型链
  • h5小游戏5--杀死国王(附源码)
  • three.js 纹理(Texture)、深度纹理(DepthTexture)、视频纹理(VideoTexture)
  • Flutter主题最佳实践
  • 力扣1381:设计一个支持增量操作的栈
  • 【快速小项目】蛋糕商城首页展示
  • 大数据-193 Apache Tez - DAG 作业计算框架 核心解释 工作原理 配置集成