一、数组 的定义
数组是相同类型数据的有序集合 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。
二、数组声明创建
首先 必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
dataType[ ] arrayRefVar;
或
dataType arrayRefVar[ ] ;
Java语言使用new操作符来创建数组,语法如下:
dataType[ ] arrayRefVar = new dataType[ arraySize] ;
数组的元素是通过索引访问的,数组索引从0开始 获取数组长度:
arrays. length
package com. jacyzhu. array ;
public class ArrayDemo01 {
public static void main ( String [ ] args) {
int [ ] nums;
int nums2[ ] ;
nums = new int [ 10 ] ;
nums[ 0 ] = 1 ;
nums[ 1 ] = 2 ;
nums[ 2 ] = 3 ;
nums[ 3 ] = 4 ;
nums[ 4 ] = 5 ;
nums[ 5 ] = 6 ;
nums[ 6 ] = 7 ;
nums[ 7 ] = 8 ;
nums[ 8 ] = 9 ;
nums[ 9 ] = 10 ;
int sum = 0 ;
for ( int i = 0 ; i < nums. length; i++ ) {
sum += nums[ i] ;
}
System . out. println ( "总和为:" + sum) ;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
运行结果:
总和为:55
Java内存分析:
四、数组的三种初始化
int [ ] a = { 1 , 2 , 3 } ;
Man [ ] mans = { new Man ( 1 , 1 ) , new Man ( 2 , 2 ) } ;
int [ ] a = new int [ 2 ] ;
a[ 0 ] = 1 ;
a[ 1 ] = 2 ;
数组的默认初始化 数组是引用类型,它的元素相当于类的实例比那里,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
package com. jacyzhu. array ;
public class ArrayDemo02 {
public static void main ( String [ ] args) {
int [ ] a = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 } ;
System . out. println ( a[ 0 ] ) ;
Man [ ] men = { new Man ( ) , new Man ( ) } ;
int [ ] b = new int [ 10 ] ;
b[ 0 ] = 10 ;
System . out. println ( b[ 0 ] ) ;
System . out. println ( b[ 1 ] ) ;
System . out. println ( b[ 2 ] ) ;
System . out. println ( b[ 3 ] ) ;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
运行结果:
1
10
0
0
0
五、数组的四个基本特点
其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。 其元素必须是相同类型,不允许出现混合类型。 数组中的元素可以是任何数据类型,包括基本类型和引用类型。 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。 数组本身就是对象,Java中对象是在堆中,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中 。
六、数组边界
下标的合法区间:[0, length-1],如果越界就会报错
public static void main ( String [ ] args) {
int [ ] a = new int [ 2 ] ;
System . out. println ( a[ 2 ] ) ;
}
ArrayIndexOutOfBoundsException:数组下标越界异常! 小结:
数组是相同数据类型(数据类型可以为任意类型)的有序集合 数组也是对象 。数组元素相当于对象的成员变量 数组长度是确定的,不可变的。如果越界,则报:ArrayIndexOutofBounds