int数组初始化_Java数组
数组是⼀组数据的集合,数组中的每个数据称为元素。在Java中,数组也是Java对象,数组中的元素可以是任意类型,但是同⼀个数组⾥只能存放相同的元素。创建数组的⼤致步骤如下:
1. 声明⼀个数组类型的引⽤类型变量,简称为数组变量。
2. ⽤new语句构造数组实例。new语句为数组分配内存,并且为数组中的每个元素赋予默认初始值。
3. 初始化,即为数组中的每个元素设置合适的初始值。
数组变量的声明
int[] scores;//scores数组存放int类型的数据
String[] names;//names数组存放字符串数据
创建数据对象
数组对象和其他Java对象⼀样,也⽤new语句创建,例如:
int[] scores = new int[100];//创建⼀个int数组,存放100个int数据
new语句执⾏以下步骤:
1. 在堆区中为数组分配内存空间,以上代码创建了⼀个包含100个元素的int数组。每个元素都是int类型,占4个字节,因此整个数组对
象在内存中占⽤400个字节。
2. 为数组中的每个元素赋予其数据类型的默认值。以上int数组中的每个元素都是int型,因此它们的默认值都是0。
3. 返回数组对象引⽤。在⽤new语句创建数组对象时,需要指定数组的长度,数组长度表⽰数组中包含的元素数⽬。数组长度可以⽤直
接数表⽰,也可以⽤变量表⽰。例如:
java int[] x = new int[10]; 或者 int size = 10; int[] x = new int[size];
数组的长度可以为0,此时数组中⼀个元素也没有。例如:
java int[] x = new int[0];
对于Java类的程序⼊⼝⽅法main(String[] args),如果运⾏这个类时没有输⼊参数,那么main()⽅法的参数args并不是null,⽽是⼀个长度为0的数组。例如:
java public class Simple{ public static void main(String[] args){ System.out.println(args.length);//打印0 } }
数组对象创建后,它的长度是固定的。数组对象的长度是⽆法改变的,但是数组变量可以改变所引⽤的数组对象。例如,在以下程序中,数组变量x先引⽤⼀个长度为3的int数组对象,后来⼜改为引⽤⼀个长度为4的int数组对象:
int[] x = new int[3];
int[] y = x;
x = new int[4];
以上程序⽤new语句创建了两个数组对象,每个数组对象的长度是⽆法改变的,下图显⽰了执⾏完以上代码后数组变量和数组对象在内存中的关系。
⽅位数组的元素和长度
数组中的每⼀个元素都有⼀个索引,或者称为下标。数组中的第⼀个元素的索引为0,第⼆个为1,依次类推。例如:
String[] names = new String[2];
names[0] = "Tom";//把names数组的第⼀个元素设为"Tom"
sout(names[0]);//打印Tom
sout(names[0]);//打印null
sout(names[0]);//抛出ArrayIndexOutOfBoundsException异常
所有Java数组都有⼀个length属性,表述数组的长度,它的声明形式为:
public final length;
length属性被public和final修饰,因此在程序中可以读取数组的length属性,但不能修改这⼀属性。
数组变量必须引⽤⼀个数组对象后,才能访问其元素。以下数组变量x作为Simple类的静态变量,没有引⽤任何数组对象,其默认值为null:
public class Simple{
static int[] x;
public static void main(String[] args){
sout(x);//打印null
sout(x[0]);//抛出NullPointerException
}
}
当数组的元素为引⽤类型,数组中存放的是对象的引⽤,⽽不是对象本⾝。在以下程序中,创建了⼀个StringBuffe r对象,然后把它的引⽤加⼊到⼀个StringBuffer数组中:
StringBuffer sb = new StringBuffer("a");//1
StringBuffer[] sbs = new StringBuffer[]{sb,null};//2
sb.append("b");//3
sb = null;//4
sbs[0].append("c");//5
sout(sbs[0]);//6打印abc
sbs[0] = null;//7 StringBuffer对象结束⽣命周期
sbs=null;//8 StringBuffer数组对象结束⽣命周期
执⾏完第⼆⾏后,StringBuffer对象被变量sb引⽤(第⼀⾏代码),并且被StringBuffer数组中的第⼀个元素引⽤,如图所⽰:
程序的第3⾏和第5⾏都向同⼀个StringBuffer对象中添加字符,执⾏完第5⾏后,StringBuffer
对象包含字符串"abc"。执⾏完第7⾏后,StringBuffer对象不被任何变量引⽤,因此StringBuffer对象结束⽣命周期。
数组初始化
数组被创建后,每个元素被⾃动地赋予其数据类型的默认值。另外,还可以在程序中将数组元素显⽰地初始化。例如:
//创建数组
int[] x = new int[5];
//初始化数组
for(int i = 0; i < x.length; i++){
x[i] = i;
}
或者:
定义数组初始化
//创建并初始化数组
int[] a = {4,5,6};
int[] b = new int[]{5,4,3,2,1};
char[] c = new char[]{'a','b','c','d'};
String[] d = {"Monday","Tuesday"};
以下是⾮法的数组初始化⽅式:
int[] x = new int[5]{5,4,3,2,1};//编译出错,不能即指定数组长度,⼜给数组元素设置初始化值int[] x;
x={5,4,3,2,1};//编译出错,{5,4,3,2,1}必须在声明数组变量中的语句使⽤,不能单独使⽤

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。