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

【数组的定义与使用】

文章目录

  • 一、数组的基本概念
    • 1、什么是数组
    • 2、数组的创建及初始化
      • (1)数组的创建
      • (2)数组的初始化
    • 3、数组的使用
      • (1)数组中元素访问
      • (2)遍历数组
  • 二、数组是引用类型
    • 1、初始JVM的内存分布
    • 2、基本类型变量与引用类型变量的区别
    • 3、再谈引用变量
    • 4、认识 null
  • 三、数组的应用场景
    • 1、保存数据
    • 2、作为函数的参数
      • (1)参数传基本数据类型
      • (2)参数传数组类型(引用数据类型)
    • 3、作为函数的返回值
  • 四、数组练习
    • 1、数组转字符串
    • 2、数组拷贝
    • 3、求数组中元素的平均值
    • 4、查找数组中指定元素(顺序查找)
    • 5、查找数组中指定元素(二分查找)
    • 6、数组排序(冒泡排序)
    • 7、数组逆序
    • 8、奇数位于偶数之前
    • 9、只出现一次的数字
    • 10、Arrays常用方法
  • 五、二维数组


一、数组的基本概念

1、什么是数组

数组:可以看成是相同类型元素的一个集合。 在内存中是一段连续的空间。

  1. 数组中存放的元素其类型相同
  2. 数组的空间是连在一起的
  3. 每个空间有自己的编号,起始位置的编号为0,即数组的下标

2、数组的创建及初始化

(1)数组的创建

在这里插入图片描述
T:表示数组中存放元素的类型
T[]:表示数组的类型
N:表示数组的长度
在这里插入图片描述

(2)数组的初始化

数组的初始化主要分为动态初始化以及静态初始化。
1. 动态初始化:在创建数组时,直接指定数组中元素的个数

int[] array = new int[10];

2. 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定

语法格式: T[] 数组名称 = {data1, data2, data3, ..., datan};
int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = new String[]{"hell", "Java", "!!!"};

【注意事项】

  • 静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。
  • 静态初始化时, {}中数据类型必须与[]前数据类型一致。
  • 静态初始化可以简写,省去后面的new T[]。
    注意:虽然省去了new T[], 但是编译器编译代码时还是会还原
  • 数组也可以按照如下C语言个数创建,不推荐
/*
该种定义方式不太友好,容易造成数组的类型就是int的误解
[]如果在类型之后,就表示数组类型,因此int[]结合在一块写意思更清晰
*/
int arr[] = {1, 2, 3};
  • 静态和动态初始化也可以分为两步,但是省略格式不可以
int[] array1;
array1 = new int[10];
int[] array2;
array2 = new int[]{10, 20, 30};
// 注意省略格式不可以拆分, 否则编译失败
// int[] array3;
// array3 = {1, 2, 3};
  • 如果没有对数组进行初始化,数组中元素有其默认值
    如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值,比如:
    在这里插入图片描述
    如果数组中存储元素类型为引用类型,默认值为null

3、数组的使用

(1)数组中元素访问

数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素。
也可以通过[]对数组中的元素进行修改
【注意事项】

  1. 数组是一段连续的内存空间,因此支持随机访问,即通过下标访问快速访问数组中任意位置的元素
  2. 下标从0开始,介于[0, N)之间不包含N,N为元素个数,不能越界,否则会报出下标越界异常。
    下标越界抛出了 java.lang.ArrayIndexOutOfBoundsException 异常(数组越界异常). 使用数组一定要下标谨防越界

(2)遍历数组

所谓 “遍历” 是指将数组中的所有元素都访问一遍, 访问是指对数组中的元素进行某种操作,比如:打印。
注意:在数组中可以通过 数组对象.length 来获取数组的长度
在这里插入图片描述
在这里插入图片描述
for-each 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错
二者区别:
1、for循环是有下标的、for each只是简单的遍历
2、一个是需要知道长度的,一个不需要
按住Ct

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

相关文章:

  • 保障工业核心命脉:深度解读工业交换机QoS的“智能流量治理”之道
  • CMake ARGV变量使用指南
  • Python桌面版数独(五版)-优化选择模式触发新棋盘生成
  • OSPF 实验
  • RuoYi-Vue 项目 Docker 全流程部署实战教程
  • 中国、美国、欧盟、日本、英国临床试验API数据接口
  • Ⅹ—6.计算机二级综合题7---10套
  • Mac系统机能连接操控别的平台设备吗?能被远程操作吗?
  • Nginx快速入门及案例
  • 【安卓笔记】解决livedata粘性事件
  • 《Java语言程序设计》第2章复习题(2)
  • RePlugin 坑位使用原理与指南
  • 多源信息融合智能投资【“图神经网络+强化学习“的融合架构】【低配显卡正常运行】
  • 模拟退火算法 (Simulated Annealing, SA)简介
  • JavaWeb学习打卡14(JSP内置对象及作用域)
  • ARM汇编常见伪指令及其用法示例
  • IntelliJ IDEA中管理多版本Git子模块的完整指南
  • 智慧工厂网络升级:新型 SD-WAN 技术架构与应用解析
  • 商场导航软件:3D+AI 基于Deepseek 模型的意图识别技术解析
  • BacNet 是什么?跟 LoRaWAN 的关系是什么?
  • 将JS字节流转化为对象
  • 西安交通大学XJTU 通信/信息工程大三和部分大四 实验和课程答案
  • C++哪些运算符不能被重载?
  • kubernetes集群中部署CoreDNS服务
  • day46day47 通道注意力
  • 一种基于单片机控制的太阳能电池板系统设计
  • 集训Demo6
  • 挖掘录屏宝藏:Screenity 深度解析与使用指南
  • 《计算机网络》实验报告八 加密、数字签名与证书
  • pytest测试框架