程序基本上都是由数据结构和算法组成,数据结构需要定义变量存储,当需要很多存储很多数据时,需要定义很多变量,代码编写非常繁琐,所以引入数组,数组可以存放一组数据,定义和使用都比较容易。
数组主要解决很多数据存储和管理的问题,避免定义很多变量。
数组是分类型,特定类型的数组只能存储特定类型的数据,Java有八种基本数据类型(boolean,byte,char,short,int,float,long,double),可以定义这些类型的数组。
数组定义
数组定义使用[]方括号,可以将[]放在数据类型后面,也可以放在数组引用名称后面。
定义数组分为两步理解,首先定义数组的引用,再分配数据内存空间,
1、可以先定义数组引用,在使用数组时分配内存空间。
int[] a;
int a[];
2、可以定义数据引用的同时,分配数据的内存空间。
int[] a = new int[10];
int a[] = new int[10];
3、可以定义数据引用的同时,分配数据内存空间并赋值。
int[] a = new int[]{1,2,3}
int a[] = {1,2,3}
数组遍历
上一节学习过Java循环,遍历数组需要使用Java循环结构,访问数组使用数组的下标,也就是数组元素的序号,从0开始计数,数组的第一个元素序号为0,第二个元素序号为1,以此类推。数组有长度属性,返回数组中元素的个数。
public class Test
{
public static void main(String[] args) throws Exception
{
int[] a = new int[]{1,2,3};
for(int i=0;i<a.length;i++)
System.out.println("第"+(i+1)+"个元素是:"+a[i]);
}
}
数组存储
数组存储使用连续的地址空间,在分配数据地址空间时,一次性分配所有的地址空间,以后无法再扩容,也就是说数组的大小是固定的,当数组已满无法再扩容大小。
数组属于对象,它存储在JVM的堆中,数组引用或数组变量,只是指向Java内存堆的一个标识,当数组变量间相互赋值时,其实是将内存堆的地址指向的赋值。
数组初始值
定义数组并分配地址空间后,根据数组类型分配数组元素的默认值,比如int类型的数据,元素的默认值是0.
二维数组
一维数组中的元素也是一维数组,此数组就是二维数组。
二维数据遍历需要使用嵌套循环,首先循环第一维数组,获取第一维数组元素后,再使用循环遍历第二维数组
public class Test
{
public static void main(String[] args) throws Exception
{
int[][] a = new int[3][3];
a[0][0] = 1;
a[0][1] = 2;
a[0][2] = 3;
a[1][0] = 10;
a[1][1] = 20;
a[1][2] = 30;
a[2][0] = 100;
a[2][1] = 200;
a[2][2] = 300;
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
System.out.print("("+i+","+j+")="+a[i][j]+"\t");
}
System.out.println();
}
}
}
高维数组