当前位置: 首页 > 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。

http://www.dtcms.com/a/190869.html

相关文章:

  • 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
  • 系统单元测试和项目打包
  • 传统LED拼接屏过时了吗?无缝技术如何改写展厅视觉呈现规则?
  • LVDS系列12:Xilinx Ultrascale系可编程输入延迟(二)
  • React系列——nvm、node、npm、yarn(MAC)
  • ESP系列单片机选择指南:结合实际场景的最优选择方案
  • 【Elasticsearch】DSL 篇
  • Oracle日期计算跟Mysql计算日期差距问题-导致两边计算不一致
  • 3天云南旅游规划
  • Java多线程售票系统实现与异常处理详解
  • 高级消防设施操作员证用途有哪些
  • Linux proc文件系统 内存影射