数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。
数组是引用数据类型,有内存分配问题,
1.动态初始化语法格式如下:
数据类型[] 数组名称 = new 数据类型 [长度] ;
当数组开辟空间之后,就可以采用如下方式进行操作:
(1)当数组采用动态初始化开辟空间之后,数组之中的每个元素都是该数据类型的默认值;
(2)数组的访问通过索引完成,数组名称[索引下标],索引从0开始到索引-1,当超出范围时会抛出
"java.lang.ArrayIndexOutOfBoundsException"异常信息。
(3)在Java中有一种动态取得数组长度的方法:数组名称.length;
(4)可通过for来遍历数组。
以下为实例代码
public class Text
{
public static void main(String[] args)
{
int[] x = new int[3] ; // 开辟了一个长度为3的数组
System.out.println(x.length) ;
x[0] = 1 ; // 数组第一个元素
x[1] = 2 ; // 数组第二个元素
x[2] = 3 ; // 数组第三个元素
for (int i = 0; i<x.length ; i++)
{
System.out.println(x[i]) ; // 通过循环控制索引下标更改
}
}
}
数组是一种引用数据类型,一定可以发生引用传递,再此之前有必要说明一下内存的概念。
在Java中内存空间分为栈内存和堆内存。
栈内存: 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。(不包括String类)
堆内存:堆内存用来存放所有new 创建的对象和 数组的数据。
如下例
Person per = new Person();
name ,age为Person类的属性
引用传递空间:同一块堆内存空间可以被不同的栈内存所指向。
注:int[] x = null ; x = new int[3] ;
分步进行数组实例化等同于 int[] x = new int[3]
public class ArrayDemo
{
public static void main(String[] args)
{
int[] x = null ;
int[] temp = null ; // 声明对象
x = new int[3] ;
System.out.println(x.length) ;
x[0] = 1 ; // 数组第一个元素
x[1] = 2 ; // 数组第二个元素
x[2] = 3 ; // 数组第三个元素
for (int i = 0; i<x.length ; i++)
{
System.out.println(x[i]) ; // 通过循环控制索引下标更改
}
temp = x ; //如果要发生引用传递,不要出现[]
temp[0] = 55 ; // 修改数据
System.out.println(x[0]) ;
}
}
2.静态初始化
动态初始化语法使用时,如果想要设置数组值,必须通过索引下标来实现。静态初始化可在声明数组的同时,进行数组内容的设置
格式如下:
数据类型[] 数组名称 = new 数据类型[] {值,值,…}
代码实例如下:
public class Text
{
public static void main(String[] args)
{
int[] x = new int[]{1,2,3} ;
System.out.println(x.length) ;
for (int i = 0; i<x.length ; i++)
{
System.out.println(x[i]) ;
}
}
}
关于数组还有几个常用的方法
1.Java类库中数组排序操作如 : java.util.Arrays.sort(arrayName) ;
2.数组部分拷贝:指的是将一个数组的部分内容替换掉另一个数组的部分内容(必须是连续的)
System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度);
3.数组拷贝: java.util.Arrays.copyOf(源数组名称,新数组长度)