一.概念
相同类型的、用一个标识符名称封装到一起的一个对象序列或基本数据类型数据序列。
数组的基本使用:静态初始化,动态初始化,垃圾回收器,内部结构实现
二.初始化
2.1静态初始化:数组在定义的时候可以同时出现设置内容
简化格式 | 数据类型 [ ]数组名称 = {值, 值,…} |
---|---|
完整格式 | 数据类型[ ] 数组名称 = new 数据类型[] {值, 值,…} |
2.2动态初始化:数组先开辟内存空间,而后再使用索引进行内容的设置
public class ArrayDemo {
public static void main(String args[]) {
int data[] = null;
data = new int[3]; //开辟一个长度为3的数组
data[0] = 10;
data[1] = 20;
data[2] = 30;
}
}
引用传递:同一块堆内存空间可以被不同的栈内存所指向
public class ArrayDemo {
public static void main(String args[]) {
int data[] = null;
data = new int[3]; //开辟一个长度为3的数组
int temp[] = null; //声明对象
data[0] = 10;
data[1] = 20;
data[2] = 30;
temp = data; //int temp[] = data;
temp[0] = 99;
for(int i = 0; i < temp.length; i++) {
System.out.println(data[i]);
}
}
}
当 栈内存对象等于 null 即该数组对象不再被任何引用变量使用的时候,“垃圾回收器”将自动释放该内存资源
三.内存结构特性
在java中当创建数组时会在内存中划分出一块连续的内存,然后当有数据进入的时候会将数据按顺序的存储在这块连续的内存中。当需要读取数组中的数据时,需要提供数组中的索引,然后数组根据索引将内存中的数据取出来,返回给读取程序。在Java中并不是所有的数据都能存储到数组中,只有相同类型的数据才可以一起存储到数组中。
所有的数据结构都支持几个基本操作:读取、插入、删除。
因为数组在存储数据时是按顺序存储的,存储数据的内存也是连续的,所以他的特点就是寻址读取数据比较容易,插入和删除比较困难。简单解释一下为什么,在读取数据时,只需要告诉数组要从哪个位置(索引)取数据就可以了,数组会直接把你想要的位置的数据取出来给你。插入和删除比较困难是因为这些存储数据的内存是连续的,要插入和删除就需要变更整个数组中的数据的位置。举个例子:一个数组中编号0->1->2->3->4这五个内存地址中都存了数组的数据,但现在你需要往4中插入一个数据,那就代表着从4开始,后面的所有内存中的数据都要往后移一个位置。这可是很耗时的。
四.数组常用方法
参考文章:https://blog.csdn.net/mrbacker/article/details/81638331
https://www.cnblogs.com/jimoer/p/8783604.html