前言:
🌈✨上次小怡给大家分享了Java方法的使用,今天小怡给大家分享Java数组的定义和使用。
1.数组的基本概念
1.1 什么是数组
数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。
注:1.数组中存放的元素其类型相同。
2.数组的空间是连在一起的。
1.2 数组的创建及初始化
1.2.1 数组的创建
下面小怡给大家列出来几种写法:
这是比较推荐的写法:
T[] 数组名=new T[N]
T:表示数组中存放元素的类型;
T[]:表示数组的类型;
N:表示数组的长度。
1.2.2 数组的初始化
数组的初始化主要分为动态初始化和静态初始化。
1.动态初始化:在创建数组时,直接指定数组中元素的个数。
int[] array=new int[10];
2.静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定。
语法格式:T[] 数组名称={data1,data2,data3,……data n};
注意事项:
- 静态初始化虽然没有指定数组的长度,编译器在编译时会u根据{}中元素个数来确定数组的长度;
- 静态初始化时,{}中数据类型必须和[]前数据类型一致;
- 静态初始化可以简写,省去后面的new T[];
- 静态初始化和动态初始化也可以分为两部,但是省略格式不可以;
- 如果没有对数组进行初始化,数组中元素有其默认值;
(1)如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值,比如:
类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0f |
double | 0.0 |
char | /u0000 |
boolean | false |
(2)如果数组中存储元素类型为引用类型,默认值为null。
1.3 数组的使用
1.3.1 数组中元素访问
数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素。
注意事项:
1.数组时一段连续的内存空间,因此支持随机访问,即通过下标访问快速访问数组中任意位置的元素。
2.下标从0开始,介于[0,N)之间不包括N,N为元素个数,不能越界,否则会报出下标越界异常。
1.4.2 遍历数组
所谓“遍历”就是将数组中的所有元素都访问一遍,访问是指对数组中的元素进行某种操作,我们可以用在c语言中的方法:使用for循环,在这里,小怡给大家介绍另外三种方法:
1. 在数组中通过 数组对象.length 来获取数组的长度:
2.使用for-each遍历数组
for(当前这个数字:数组的名字)
for-each是for循环的另一种使用方式,能够更方便的完成对数组的遍历,遍历array这个数组,取出每个元素放到x里面。
缺点:无法获取到对应的下标。
3.使用toString方法:
其实这里输出的就是一个字符串,使用Arrays的同String方法,把传入的参数array表示的数组,以字符串的形式输出。
2.数组的应用场景
2.1 保存数据
2.2 作为函数的参数
函数结束:意味着回收局部变量。
1.参数传基本数据类型
发现在func方法中修改形参x的值,不影响实参的num值。
2.参数传数组类型(引用数据类型)
发现在func方法内部修改数组的内容,方法外部的数组内容也发生改变。因为数组时引用类型,按照引用类型来进行传递,是可以修改其中存放的内容的。
总结:
- 一个引用不可能同时指向多个对象;
- int[ ] array=null,代表这个引用不指向任何对象;
- array1=array2,代表array1这个引用指向了array2这个引用指向的对象。
- 所谓的“引用”本质上只是存了一个地址。Java把数组设定成引用类型,这样后续进行数组参数传参,其实只是将数组的地址传入到函数形参中。这样可以避免对整个数组的拷贝(数组可能比较长,那么拷贝开销将会很大)。
2.3 作为函数的返回值
比如:获取斐波那契数列的前N项
3.二维数组
二维数组本质上也就是一维数组,只不过每个元素又是一个一维数组。
基本语法
数据类型[][] 数组名称=new 数据类型[行数][列数]{初始化数据}
代码示例:
二维数组的用法和一维数组并没有什么明显区别,因此我们不再赘述。同理,还存在“三维数组”“四维数组”等更复杂的数组,只不过出现频率更低。
🌈✨今天的分享就到这里了,还有一些数组的练习,后面小怡再和大家一起分享,小怡和大家一起学习一起进步,“鼓起理想风帆前进。天天向上,展开梦想翅膀腾飞” 。