一:数组的概念:
数组是java容器的一种,在java内存中是连续的内存空间,是用来存储数据长度固定的容器,保证多个数据类型要一致。
二:数组的定义方式:
格式一:数组存储的数据类型[] 数组名字;
格式二:数组存储的数据类型 数组名字[];
三:数组的初始化方式:
方式一
数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
数组定义格式详解:
- 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
- [] : 表示数组。
- 数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。
- new:关键字,创建数组使用的关键字。
- 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。 [长度]:数组的长度,表示数组容器中可以存储多少个元素。 注意:数组有定长特性,长度一旦指定,不可更改。 和水杯道理相同,买了一个2升的水杯,总容量就是2升,不能多也不能少。
举例:
定义可以存储3个整数的数组容器,代码如下:
int[]arr=new int[3];
方式二
格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
举例:
定义存储1,2,3,4,5整数的数组容器。
int[] arr = new int[]{1,2,3,4,5};
方式三
格式:数据类型[] 数组名 = {元素1,元素2,元素3…};
举例:
定义存储1,2,3,4,5整数的数组容器
int [] arr ={1,2,3,4.5},
四: 数组的访问
- 索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引
(index),可以通过数组的索引访问到数组中的元素。 格式
数组名[索引] - 数组的长度属性:
每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的 长度,语句为: 数组名.length
,属性length的执行结果是数组的长度,int类型结果。由次可以推断出,数 组的最大索引值为 数组名.length-1 。
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5};
//打印数组的属性,输出结果是5
System.out.println(arr.length);
}
- 索引访问数组中的元素:
数组名[索引]=数值,为数组中的元素赋值
变量=数组名[索引],获取出数组中的元素
public static void main(String[] args) {
//定义存储int类型数组,赋值元素1,2,3,4,5
int[] arr = {1,2,3,4,5};
//为0索引元素赋值为6
arr[0] = 6;
//获取数组0索引上的元素
int i = arr[0];
System.out.println(i);
//直接输出数组0索引元素
System.out.println(arr[0]);
}
五:数组原理内存图
-
1.java虚拟机内存概述
java虚拟机分为寄存器(程序计数器),本地方法区,java虚拟机栈,堆内存,方法区
![在这里插入图片描述](https://img-blog.csdnimg.cn/2 -
数组的内存概述(与链表的区别)
数组是将元素在内存中连续存储的线性序列;优点:因为数据是连续存储的,内存地址连续,所以在查找数据的时候效 率比较高; 缺点:在存储之前,我们需要申请一块连续的内存空间,并且在编译的时候就必须确定好它的空间的大小。在运行的时候空间的大小是无法随着你的需要进行增加和减少而改变的,当数据两比较大的时候,有可能会出现越界的情况,数据比较小的时候,又有可能会浪费掉内存空间。在改变数据个数时,增加、插入、删除数据效率比较低链表是动态申请内存空间,不需要像数组需要提前申请好内存的大小,