1:数组(Array)是相同类型数据的集合。
2:Java 数组初始化的两种方法:
(1)静态初始化: 程序员在初始化数组时为数组每个元素赋值;
(2)动态初始化: 数组初始化时,程序员只指定数组的长度,由系统为每个元素赋初值。
3:怎么定义数组
方式1(推荐,更能表明数组类型)
type[] 变量名 = new type[数组中元素的个数];
比如:
int[] a = new int[10];
数组名,也即引用a,指向数组元素的首地址。
方式2(同C语言)
type变量名[] = new type[数组中元素的个数];
如:
int a[] = new int[10];
方式3 定义时直接初始化
type[] 变量名 = new type[]{逗号分隔的初始化值};
其中红色部分可省略,所以又有两种:
int[] a = {1,2,3,4};
int[] a = new int[]{1,2,3,4};
其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。
4:数组的基础运用
(1)数组长度
Java中的每个数组都有一个名为length的属性,表示数组的长度。
length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。
public class Test {
public static void main(String[] args) {
int i;
int[] a;
a = new int[5];
for (i=0;i<5;i++)
a[i]=i;
for (i=a.length-1;i>=0;i--)
System.out.println("a["+i+"]="+a[i]+",\t");
System.out.println("\n数组a的长度是:“+a.length");
}
}
输出结果为:
a[4]=4,
a[3]=3,
a[2]=2,
a[1]=1,
a[0]=0,
数组a的长度是:5
(2)数组元素不为基本数据类型时
组元素不为基本原生数据类型时,存放的是引用类型,而不是对象本身。当生成对象之后,引用才指向对象,否则引用为null
public class ArrayTest {
public static void main(String[] args)
{
Person[] p = new Person[3];
//未生成对象时,引用类型均为空
System.out.println(p[0]);
//生成对象之后,引用指向对象
p[0] = new Person(10);
p[1] = new Person(20);
p[2] = new Person(30);
for(int i = 0; i < p.length; i++)
{
System.out.println(p[i].age);
}
}
}
class Person
{
int age;
public Person(int age)
{
this.age = age;
}
}
输出结果为:
null
10
20
30
(3)二维数组
二维数组是数组的数组。
基本的定义方式有两种形式,如:
type[][] i = new type[2][3];(推荐)
type i[][] = new type[2][3];
二维数组可以用比较经典的杨辉三角形来举例:
public class woo {
public static void triangle(int n) {
int[][] array = new int[n][n];//三角形数组
for(int i=0;i<array.length;i++){
for(int j=0;j<=i;j++){
if(j==0||j==i){
array[i][j]=1;
}else{
array[i][j] = array[i-1][j-1]+array[i-1][j];
}
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
}
public static void main(String args[]) {
triangle(9);
}
}
运行结果:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
(4)还有三维及以上的多维数组
使用多维数组,输入和输出的方式和一维 / 二维的数组相同,但是每多一维,嵌套循环层数就要多一层,所以一维数越高的数组起复杂程度也就更难,这里我们就不过多展示了。