当前位置: 首页 > 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.lryc.cn/news/599024.html

相关文章:

  • 使用Python采集招聘网站数据并智能分析求职信息
  • AI大模型各类概念扫盲
  • 【C++】标准模板库(STL)—— 学习算法的利器
  • 算法题(179):单调栈
  • C++抽象类完全指南
  • ARM汇编常见伪指令及其用法示例
  • Datawhale AI数据分析 作业2
  • linux入门 相关linux系统操作命令(二)--文件管理系统 ubuntu22.04
  • DS18B20扩展:在数码管上显示温度时包含小数部分
  • MPI并行梯形积分法:原理、实现与优化指南
  • 【PyTorch】图像二分类项目-部署
  • 从零开始学 Pandas:数据处理核心操作指南
  • 清除浮动以及原理
  • cri-docker部署高版本k8s
  • 闲庭信步使用图像验证平台加速FPGA的开发:第三十四课——车牌识别的FPGA实现(6)叠加车牌识别的信息
  • 5.7 input子系统
  • RocketMQ集群高级特性
  • 洛谷刷题7.24
  • 办公自动化入门:如何高效将图片整合为PDF文档
  • 精通Python PDF裁剪:从入门到专业的三重境界
  • 读书笔记(黄帝内经)
  • 【CMake】CMake 常用语法总结
  • 【STM32】FreeRTOS 任务的创建(二)
  • Bright Data 实战指南:从竞品数据抓取到电商策略优化全流程
  • 深度分析Java类加载机制
  • 【C# 找最大值、最小值和平均值及大于个数和值】2022-9-23
  • 行为型模式-协作与交互机制
  • 基于Matlab图像处理的水果分级系统
  • OpenCV(03)插值方法,边缘填充,透视变换,水印制作,噪点消除
  • 【计算机网络】第六章:应用层