Java 基础知识-数组

 
  
public class test {
    public static void main(String[] args) {
	    int[] arr1 = new int[3];	//数组动态初始化
	    int[] arr2 = new int[] {11,22,33};	        //数组静态初始化
	    int[] arr3 = new int[3] {11,22,33};	        //不允许动静相结合
	    int[] arr4 = {11,22,33};	//静态初始化的简写形式,声明与赋值在同一行
    }
}

5行报错,动态初始化和静态初始化不能同时使用。


数组操作的两个常见小问题:

  1. ArrayIndexOutOfBoundsException,数组索引(下标)越界异常。原因:访问了不存在的索引。
  2.  NullPointerException,空指针异常。原因:数组已经不存在,还用数组名访问数组中的元素。
public class test {
	public static void main(String[] args) {
		int[] arr1 = new int[3];
		/************数组索引(下标)越界异常*************/
		System.out.println(arr1[3]);     //当访问数组中不存在的索引,会出现索引异常
		/************空指针异常*************/
		arr1 = null;                     //当数组引用赋值为null,再去调用数组中的元素就会出现空指针异常。
		System.out.println(arr1[0]);
	}		
}


数组的反转(元素对调):

  1. 明确返回值类型void
  2. 明确参数列表int[ ] arr
public class test {
    public static void main(String[] args) {
	    int[] arr = {11,22,33,44,55};
	    reverseArray(arr);	//反转数组
	    print(arr);			//输出
    }
    
	/*
	 * 数组元素反转
	 1、明确返回值类型void
	 2、明确参数列表int[ ] 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.length-1-2]交换
    		//...
    		int temp = arr[i];		//设置一个中间变量存储中间值
    		arr[i] = arr[arr.length - 1 - i];
    		arr[arr.length - 1 - i] = temp;
    	}
    }
    
    /*
     * 数组遍历输出
     1、明确返回值类型void
     2、明确参数列表int[] arr
     */
    public static void print(int[] arr) {
    	for (int i = 0; i < arr.length; i++) {	//遍历数组中的每一个元素
			System.out.println(arr[i] + " ");	//打印到控制台
		}
    }
}


二维数组:

数组为引用数据类型,默认初始化值为null。

二维数组的三种表示格式:

public class test {
    public static void main(String[] args) {
	    /*
	     * 第一种,也是最常用
	     */
    	int[][] arr = new int[3][2];
	    
    	/*
    	 * 第二种
    	 */
    	int[][] arr1 = new int [3][];	//声明一个二维数组,由三个一维数组组成,默认初始化值为null
    	arr1[0] = new int[3];			//初始化第一个一位数组
    	arr1[1] = new int[5];			//初始化第二个一位数组
    	
    	/*
    	 * 第三种
    	 */
    	int[][] arr2 = {{1,2,3},{4,5},{6,7,8}};		//每个大括号代表一个一维数组
    }
}


分析以下程序段输出

public class test {
    public static void main(String[] args) {
	    int[][] arr = new int[3][2];
	    
	    System.out.println(arr);		//二维数组(地址值)
	    System.out.println(arr[0]);		//二维数组中的第一个一维数组(地址值)
	    System.out.println(arr[0][0]);	//二维数组中的第一个一维数组的第一个元素(元素值)
    }
}

输出结果:

[[I@42a57993       //二维数组(地址值)
[I@75b84c92        //二维数组中的第一个一维数组(地址值)
0                  //二维数组中的第一个一维数组的第一个元素(元素值)

图解分析:



猜你喜欢

转载自blog.csdn.net/qq_36847713/article/details/80725299