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

Java基础语法之数组

数组

一、认识数组

1.什么是数组

  • 数组就是一个容器,用来存一批同种类型的数据。

举例

20, 10, 80, 60, 90
int[] arr = {20, 10, 80, 60, 90};张三, 李四, 王五
String[] names = {"张三", "李四", "王五"};

2.为什么要使用数组

假设用变量解决随机点名的需求

  • 代码繁琐:大量变量的定义。
  • 实现需求繁琐。
String name1 = "张誉";
String name2 = "刘疏桐";
String name3 = "田启峰";
...
...
String name68= "张学颖";
String name69= "李沁霖";
String name70= "陈侃";Random r = new Random();
int number = r.nextInt(70) + 1; // 1 - 70
switch (number){
case 1:
System.out.println(name1 + "出来回答问题!");
break;
case 1:
System.out.println(name2 + "出来回答问题!");
break;
...
}

用数组解决随机点名的需求

  • 代码简洁。
  • 逻辑清晰。
String[] names = {“张誉”, “刘疏桐”, “田启峰”,… “张学颖”, “李沁霖”, “陈侃”,};
Random r = new Random();
int i = r.nextInt(70); // 0- 69
System.out.println(names[i] + “出来回答问题!”)

结论

  • 结论:遇到批量数据的存储和操作时,数组比变量更适合。

二、数组的定义和访问

1.静态初始化数组

1.1 定义
  • 义数组的时候直接给数组赋值。
1.2 静态初始化数组的格式
  • 数据类型[] 数组名 = new 数据类型[]{元素1,元素2 ,元素3… };
// 完整格式
int[] ages = new int[]{12, 24, 36}
double[] scores = new double[]{89.9, 99.5, 59.5, 88.0};
  • 数据类型[] 数组名 = { 元素1,元素2 ,元素3,… };
// 简化格式
int[] aes = {12, 24, 36};

注意

  • “数据类型[] 数组名”也可写成 “数据类型 数组名[] ”。
  • 什么类型的数组只能存放什么类型的数据。
  • 数组变量名中存储的是数组在内存中的地址,数组是一种引用数据类型
1.3 数组的访问
1.3.1 数组的访问
  • 数组名[索引]
// 取值
System.out.println(arr[0]); // 12
// 赋值
arr[2] = 100;
System.out.println(arr[2]); // 100
1.3.2 数组的长度属性:length
// 获取数组的长度(就是数组元素的个数)
System.out.println(arr.length); // 3
1.3.3 数组的最大索引
数组名. length – 1 // 前提:元素个数大于0

注意:

  • 访问数组时,若使用的索引超过了数组最大索引,执行程序时会出bug,出现一个索引越界的异常提示
1.4 数字的遍历
1.4.1 遍历定义
  • 就是一个一个数据的访问。
1.4.2 为什么要遍历数组
  • 求和
  • 元素搜索
  • 找最大值
  • 找最小值

2.动态初始化数组

2.1 定义
  • 定义数组时先不存入具体的元素值,只确定数组存储的数据类型和数组的长度
2.2 数组的动态初始化格式
数据类型[]  数组名 = new 数据类型[长度];
int[] arr = new int[3];// 后赋值
arr[0] = 10;
System.out.println(arr[0]); // 10

注意

静态初始化和动态初始化数组的写法是独立的,不可以混用。

2.3 动态初始化数组元素默认值规则
数据类型默认值
byte、short、char、int、long0
float、double0.0
booleanfalse
类、接口、数组、Stringnull

3.数组在计算机中的执行原理

3.1 数组的执行原理,Java程序的执行原理
3.1.1 ava 内存分配介绍
  • 方法区
  • 本地方法栈
  • 寄存器

在这里插入图片描述

简单说说 int a = 20; int[] arr = new int[3]这两行代码的执行原理?

  • a是变量,直接放在栈中,a变量中存储的数据就是20这个值。
  • new int[3]是创建一个数组对象,会在堆内存中开辟区域存储3个整数。
  • arr是变量,在栈中,arr中存储的是数组对象在堆内存中的地址值。
3.2 多个变量指向同一个数组的问题

在这里插入图片描述

  • 如果某个数组变量存储的地址是null,那么该变量将不再指向任何数组对象

总结

  • 多个数组变量,指向同一个数组对象的原因是什么?需要注意什么?

    • 多个数组变量中存储的是同一个数组对象的地址。
    • 多个变量修改的都是同一个数组对象中的数据。
  • 如果某个数组变量中存储的null,代表什么意思?需要注意什么?

  • 代表这个数组变量没有指向数组对象。
    p-1747228570011)]

  • 如果某个数组变量存储的地址是null,那么该变量将不再指向任何数组对象

总结

  • 多个数组变量,指向同一个数组对象的原因是什么?需要注意什么?

    • 多个数组变量中存储的是同一个数组对象的地址。
    • 多个变量修改的都是同一个数组对象中的数据。
  • 如果某个数组变量中存储的null,代表什么意思?需要注意什么?

  • 代表这个数组变量没有指向数组对象。

  • 可以输出这个变量,但是不能用这个数组变量去访问数据或者访问数组长度,会报空指针异常:NullPointerException。

相关文章:

  • Java版OA管理系统源码 手机版OA系统源码
  • 宝塔基于亚马逊云服务器安装mysql5.7失败问题记录
  • 数据预处理之数据平滑处理详解
  • why FPGA喜欢FMC子卡?
  • 2025年Flutter初级工程师技能要求
  • LVS负载均衡群集和keepalive
  • 苍穹外卖 - Day02 学习笔记
  • 行政区划XML接口数据文件
  • P2168 NOI2015 荷马史诗
  • 入侵检测SNORT系统部署过程记录
  • 二手车估值接口介绍
  • Android App View——团结引擎车机版实现安卓应用原生嵌入 3D 开发场景
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-A. PostgreSQL常用函数速查表
  • 近期搬了个家,停更了几天,明天继续哈~
  • 图论part10 bellman_ford算法
  • MCP:开启AI的“万物互联”时代
  • Linux干货(三)
  • whonix系统详解
  • 【DRAM存储器五十一】LPDDR5介绍--CK、WCK、RDQS单端模式、Thermal Offset、Temperature Sensor
  • 系统单元测试和项目打包
  • 牛市早报|4月新增社融1.16万亿,降准今日正式落地
  • 占地57亩的“潮汕豪宅”面临强制拆除:曾被实施没收,8年间举行5次听证会
  • 为什么越来越多景区,把C位留给了书店?
  • 中哥两国元首共同见证签署《中华人民共和国政府与哥伦比亚共和国政府关于共同推进丝绸之路经济带和21世纪海上丝绸之路建设的合作规划》
  • “75万买299元路由器”事件进展:重庆市纪委等三部门联合介入调查
  • “救护车”半路加价?陕西卫健委已介入,记者调查:黑救护车挤占市场