一维数组内存图
数组元素的遍历
char[] cs = new char[5];
for (int i = 0; i < cs.length; i++) {
System.out.println((int)cs[i]);
}
char类型数组的数组元素默认值为0或者’\u0000’
Integer iss[] = {1,2,3};
/*普通for循环遍历数组*/
for (int i = 0; i < iss.length ; i++) {
System.out.println(iss[i]);
}
/*增强for循环遍历数组*/
for (Integer i: iss) {
System.out.println(i);
}
/*Stream流遍历数组*/
Stream.of(iss).forEach(System.out::println);
Stream.of(iss).forEach(i -> System.out.println(i));
数组元素的反向遍历
int iss[] = {1,2,3};
for (int i = iss.length-1; i >=0 ; i--) {
System.out.println(iss[i]);
}
数组元素的反转
数组的反转:数组中的元素颠倒顺序。
Integer iss[] = {1,2,3,4,5,6,7,8,9};
for (Integer i = 0; i < iss.length/2 ; i++) {
Integer temp = iss[i];
iss[i] = iss[iss.length-1-i];
iss[iss.length-1-i] = temp;
}
数组作为方法参数
数组作为方法参数传递,传递的参数是数组内存的地址。
public static void main(String[] args) {
int[] arr = { 1, 3, 5, 7, 9 };
//调用方法,传递数组
printArray(arr);
}
/*
创建方法,方法接收数组类型的参数,进行数组的遍历
*/
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
数组作为方法返回值
数组作为方法的返回值,返回的是数组的内存地址。
public static void main(String[] args) {
/*调用方法,接收数组的返回值,接收到的是数组的内存地址*/
int[] arr = getArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/*
创建方法,返回值是数组类型,返回的是数组的地址
*/
public static int[] getArray() {
int[] arr = { 1, 3, 5, 7, 9 };
//返回数组的地址
return arr;
}
数组越界异常
ArrayIndexOutOfBoundsException:访问了数组中不存在的索引。
Integer iss[] = {1,2,3,4,5,6,7,8,9};
/*数组有9个元素,最大索引是8*/
System.out.println(iss[9]);
空指针异常
NullPointerException:使用null调用变量或者方法。
int[] is = new int[]{1,2,3};
System.out.println(is[0]);
is = null;
System.out.println(is[0]);
二维数组内存图
二维数组遍历
int[][] grades = new int[][]{{0,1,2},{3,4,5,6},{7,8,9,10,11}};
for (int i = 0; i < grades.length; i++) {
for (int j = 0; j < grades[i].length; j++) {
System.out.print(grades[i][j]+" ");
}
System.out.println();
}