JavaSE知识-05(数组)

数据类型[] 数组名 = new 数据类型[数组的长度];
int [] arr = new int[5]; //动态初始化,可以存储5个int类型的数据

系统给出默认初始化值,整数类型(byte,short,int,long)都是0
浮点类型(float,double)都是0.0
布尔类型(boolean)是false 字符类型(char)是'u0000'

char在内存中占两个字节,是16个二进制位
u0000,每一个0代表的是16进制的0,那么四个0就是代表16个二进制位


[代表是数组,几个代表几维
I代表int类型
@是固定的
1db9742代表是16进制的地址值


  • 存储局部变量:定义在方法声明上和方法中的变量


  • 存储new出来的数组或对象

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
或简化为 数据类型[] 数组名 = {元素1,元素2,...};
int[] arr = new int[]{11,22,33,44,55};
此种形式可以先申明后赋值,即等价于
int[] arr; arr = {11,22,33,44,55};
或简化为int[] arr={11,22,33,44,55};
//静态初始化

数组操作异常

  • ArrayIndexOutOfBoundsException:数组索引越界异常
    原因:你访问了不存在的索引,下标越界
  • NullPointerException:空指针异常
    原因:数组已经不再指向堆内存,而你还用数组名去访问元素
    int[] arr ={1,2,3};
    arr = null;
    System.out println(arr[0]);

数组元素反转(就是把元素对调)

class Demo10_Array {
	public static void main(String[] args) {
		int[] arr = {11,22,33,44,55};
		reverseArray(arr);
		print(arr);
	}
	public static void reverseArray(int[] arr) {
		for (int i = 0;i < arr.length / 2 ; i++) {
			//arr[0]和arr[arr.length-1-0]交换
			//arr[1]和arr[arr.length-1-1]交换
			//arr[2]和arr[arr.lentth-1-2]
			//...

			int temp = arr[i];
			arr[i] = arr[arr.length-1-i];
			arr[arr.length-1-i] = temp;
		}
	}
	public static void print(int[] arr) {
		for (int i = 0;i < arr.length ;i++ ) {				//遍历数组中的每一个元素
			System.out.print(arr[i] + " ");					//打印在控制台
		}
	}
}

二维数组

  • 格式: int[][] arr = new int[3][2];推荐
    表示有3个一位数组,每个一维数组有2个元素.
    其它格式也可表示:
  • 数据类型 数组名[][] = new 数据类型[m][n];
  • 数据类型[] 数组名[] = new 数据类型[m][n];

数组的默认初始化值是null

二维数组的遍历

  • 外循环控制的是二维数组的长度,其实就是一维数组的个数。
  • 内循环控制的是一维数组的长度。
class Test1_Array {
	public static void main(String[] args) {
		int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
		for (int i = 0;i < arr.length ;i++ ) {			//获取到每个二维数组中的一维数组
			for (int j = 0;j < arr[i].length ;j++ ) {	//获取每个一维数组中的元素
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
	}
}
原文地址:https://www.cnblogs.com/albieh/p/12189647.html