1. 使用用Java中的数组,必须要经过声明数组和分配内存给该数组两个步骤(定义时就初始化除外)。
int a[] = null; a = new int[10]; int[] a = null; a = new int[10]; int a[] = new int[10];
其中 null 表示的是引用类型的默认值,数组是引用类型,null表示目前还没有任何指向的内存空间。
2. Java中获取数组的长度可以使用 <数组名>.length 的形式,若是多维数组,获取下一维数组的长度可以使用 <数组名[i]>.length 的形式。
3. Java中的数组也可以静态初始化
int a[5] = {1, 2, 3, 4, 5};
4. Java中的二维数组
int b[][]; b = new int[4][3]; //4行3列 int b[][] = new int[4][3];
5. Java中的二维数组的初始化
int b[][] = {{row 1}, {row 2}, {row n}};
6. 二维数组Demo
public class Array { public static void main(String args[]) { int score[][] = {{80, 90}, {10, 20, 30, 40, 50}, {60, 70, 100}}; for (int i = 0; i < score.length; i++) { for (int j = 0; j < score[i].length; j++) { //注意这里的score[i].length System.out.print(score[i][j] + "\t"); } System.out.println(""); } } } # java Array 80 90 10 20 30 40 50 60 70 100
7. Java中的多维数组
int c[][][] = new int[3][4][5]; //更多维依次类推
8. Java中的数组传递与返回
public class Array { public static void main(String args[]) { int score[]= {10, 20, 30, 40, 50, 60}; int tmp[] = changeScore(score); for (int i = 0; i < score.length; i++) { System.out.print(score[i] + "\t"); } System.out.println(""); for (int i = 0; i < tmp.length; i++) { System.out.print(tmp[i] + "\t"); } System.out.println(""); } public static int[] changeScore(int a[]) { for (int i = 0; i < a.length; i++) { a[i] = 100; } return a; } } # java Array 100 100 100 100 100 100 100 100 100 100 100 100
Java中的数组不用传长度参数了,自带长度属性。应该也不会出现像C中的传参退化的表现。
直接在函数内定义并初始化数组后返回这个数组,在Java代码中应该也是安全的,毕竟数组元素都在堆空间上,和C有较大区别。
public class Array { public static void main(String args[]) { int dst[] = func(); for (int i = 0; i < dst.length; i++) { System.out.print(dst[i] + "\t"); } System.out.println(""); } public static int[] func() { int src[]= {10, 20, 30, 40, 50, 60}; return src; } } # java Array 10 20 30 40 50 60
9. Java类库中完成数组排序与拷贝的方法
public class Array { public static void main(String args[]) { int score[]= {10, 20, 60, 30, 50, 40}; java.util.Arrays.sort(score); //不需要import直接可以使用 for (int i = 0; i < score.length; i++) { System.out.print(score[i] + "\t"); } System.out.println(""); } } # java Array 10 20 30 40 50 60
public class Array { public static void main(String args[]) { int src[]= {10, 20, 30, 40, 50, 60}; int dst[]= {11, 22, 33, 44, 55, 66}; System.arraycopy(src, 1, dst, 2, 4); //将src的下标1开始拷贝4个元素到dst下标为4的位置 for (int i = 0; i < dst.length; i++) { System.out.print(dst[i] + "\t"); } System.out.println(""); } } # java Array 11 22 20 30 40 50
Java为开发者提供了各种各样的支持,这些类库在 Java Doc 中可以查找到。
10. Java新特性——可变参数
public class Array { public static void main(String args[]) { func(10, 20); func(10, 20, 30, 40); } public static void func(int... arg) { //(<type>... <参数列表名>) for (int i = 0; i < arg.length; i++) { System.out.print(arg[i] + "\t"); } System.out.println(""); } } # java Array 10 20 10 20 30 40
和传数组同样的效果,只不过传参方式不同。
11. Java新特性——foreach输出
public class Array { public static void main(String args[]) { int src[]= {10, 20, 30, 40, 50, 60}; func(src); } public static void func(int arg[]) { for (int value : arg) { System.out.print(value + "\t"); //此时直接是值,而不是下标了 } System.out.println(""); } } # java Array 10 20 30 40 50 60
参考《Java开发实战经典》