数组:
- 声明整形数组:
int[] a; int a[];
- 声明并创建数组:
int[] a=new int[10];
创建了一个长度为10的数组; - 创建一个int数组时,所有的元素都初始化为0;boolean数组的元素会初始化为false;String数组的元素初始化为null;对象数组的元素初始化为null;
for each循环
增强的for循环:for(int element: a) System.out.println(a[i]);
数组初始化
int[] a={1,2,3};
初始化一个匿名数组
new int[]{1,2,3};
数组拷贝
int[] a={1,2,3,4};
int[] b=a; //将数组a拷贝给b
int[] c=Arrays.copyOf(a,a.length); //将数组a,使用Arrays类的方法copyOf拷贝给c
Arrays.copyOf()第二个参数是新数组的长度,这个方法通常用来增加数组的大小:
int[] a={1,2,3,4};
a=Arrays.copyOf(a,2*a.length); //将数组a的长度扩大到之前的2倍
数组排序
int[] a=new int[]{2,1,4,6};
Arrays.sort(a); //使用sort方法给数组排序,这个方法使用了快速排序算法
多维数组
初始化一个多维数组:
int[][] magicSquare=
{
{16,3,2,13},
{5,1,11,0},
{3,1,4,5},
(5,2,5,9}
}
for each循环语句不能自动处理二维数组的每一个元素。他是按照行,也就是一维数组处理的。要想访问一个二维数组所有元素,需要使用两个嵌套的循环
for(int[] row:a)
for(int[] value:row)
do something with value
要想快速的打印一个二维数组:
System.out.println(Arrays.deepToString(a));
public class LotteryArray {
public static void main(String[] args) {
final int NMAX = 10;
int[][] odds = new int[NMAX + 1][];
for (int n = 0; n <= NMAX; n++) {
odds[n] = new int[n + 1];
System.out.println(odds[n].length);
}
for (int n = 0; n < odds.length; n++) {
for (int k = 0; k < odds[n].length; k++) {
int lotteryOdds = 1;
for (int i = 1; i < k; i++)
lotteryOdds = lotteryOdds * (n - i + 1) / i;
odds[n][k] = lotteryOdds;
}
for (int[] row : odds) {
for (int odd : row)
System.out.printf("%4d", odd);
System.out.println();
}
}
}
}
1
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 1 9 36 84 126 126 84 36 9
1 1 10 45 120 210 252 210 120 45 10