2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > java数组初始化为 1_Java Class 1.1数组初始化

java数组初始化为 1_Java Class 1.1数组初始化

时间:2020-01-19 04:27:28

相关推荐

java数组初始化为 1_Java Class 1.1数组初始化

1.1.1Java数组是静态的

Java语言是静态语言,所以Java数组是静态的,当数组完成初始化后该数组的长度是不可变的。(初始化就是为数组元素分配存储空间并制定每个元素的初始值)

数组初始化有两种方式:

静态初始化:初始化时由程序员指定数组元素的初始值,有系统决定数组长度;

动态初始化:初始化时由程序员指定数组长度,由系统为数组元素分配初始值。

两种初始化完成后数组长度都不可改变!

packagejavaclass.arraytest_1_1_1;

/**

*

*@authorvincent

*

*/

publicclassArrayTest{

publicstaticvoidmain(String[]args){

//静态初始化第1个数组

String[]books=newString[]{

"疯狂Java讲义",

"轻量级JavaEE企业应用实战",

"疯狂ajax讲义",

"疯狂XML讲义"

};

//静态初始化的简化初始方式,初始化第2个数组

String[]names={"孙悟空","猪八戒","白骨精"};

//动态初始化第3个数组

String[]setArry=newString[5];

//访问3个数组的长度

System.out.println("数组1长度:"+books.length);

System.out.println("数组2长度:"+names.length);

System.out.println("数组3长度:"+setArry.length);

}

}

注意:数组初始化是不要既指定数组长度,又为每个数组元素分配初始值!

Java数组变量是一种引用变量,数组变量不是数组本身,它只是指向对内存中的数组对象。因此可以改变数组变量所引用的数组,这样可以造成数组长度可变的假象。

packagejavaclass.arraytest_1_1_1;

/**

*

*@authorvincent

*

*/

publicclassArrayTest{

publicstaticvoidmain(String[]args){

//静态初始化第1个数组

String[]books=newString[]{

"疯狂Java讲义",

"轻量级JavaEE企业应用实战",

"疯狂ajax讲义",

"疯狂XML讲义"

};

//静态初始化的简化初始方式,初始化第2个数组

String[]names={"孙悟空","猪八戒","白骨精"};

//动态初始化第3个数组

String[]setArry=newString[5];

//改变数组变量所引用的数组

books=names;

setArry=names;

//访问3个数组的长度

System.out.println("数组1长度:"+books.length);

System.out.println("数组2长度:"+names.length);

System.out.println("数组3长度:"+setArry.length);

}

}

1.1.2数组一定要初始化吗

可以换一个方式初始化数组,或者说数组无需初始化。记住:数组变量是引用类型变量,不是数组本身,只要将 数组变量指向有效的数组对象,即可在程序中使用该数组变量。

packagejavaclass.arraytest_1_1_1;

publicclassArrayTest3{

publicstaticvoidmain(String[]args){

//定义并初始化数组nums

int[]nums=newint[]{3,5,20,12};

//定义prices数组变量

int[]prices;

//让prices数组变量指向nums所引用的数组

prices=nums;

for(inti=0;i

System.out.println(prices[i]);

//将prices数组的第三个元素赋值为34

prices[2]=34;

System.out.println("nums数组的第三个元素值为:"+nums[2]);

}

}

1.1.3基本类型数组的初始化

packagejavaclass.arraytest_1_1_1;

/**

*@authorvincent

*/

publicclassPrimitiveArrayTest{

publicstaticvoidmain(String[]args){

//定义一个int[]类型的数组变量

int[]iArr=newint[]{2,5,-12,20};

for(inti=0;i

System.out.println(iArr[i]);

}

}

所有的局部变量都是放在栈内存中的,不管是基本类型的变量,还是引用类型的变量,都是存储在各自的方法栈区中;但引用类型变量所引用的对象总是存储在堆内存中。

Java是不允许访问堆内存中的对象,为了访问他们只能通过引用变量。(引用变量本质上只是一个指针)

packagejavaclass.arraytest_1_1_1;

publicclassPrimitiveArrayTest2{

publicstaticvoidmain(String[]args){

//定义一个int[]类型的数组变量

int[]iArry=null;

//只要不访问iArry的属性和方法,程序完全可以使用该数组变量

System.out.println(iArry);

//初始化数组

iArry=newint[5];

//只有当iArry指向有效的数组对象后,才可以方位iArry的属性

System.out.println(iArry.length);

}

}

1.1.4引用类型数组的初始化

引用类型数组的数组元素依然是引用类型的,因此数组元素里存储的还是引用,它指向另一块内存,这块内存里存储了该引用变量所引用的对象

packagejavaclass.arraytest_1_1_1;

publicclassReferenceArratTest{

privatestaticPerson[]students;

publicstaticvoidmain(String[]args){

//定义数组变量students,类型是Person[]

students=newPerson[2];

System.out.println("students所引用的数组的长度是:"+students.length);

//创建一个Person实例

Personzhang=newPerson();

zhang.age=15;

zhang.height=165;

Personlee=newPerson();

lee.age=16;

lee.height=170;

students[0]=zhang;

students[1]=lee;

//下面两行代码的结果完全一样,因为lee和students[1]指向同一个Person实例

lee.info();

students[1].info();

}

}

classPerson{

publicintage;

publicintheight;

publicvoidinfo(){

System.out.println("age:"+age+"height:"+height);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。