概述
使用
声明方式
Java 中声明数组时不能指定其长度 (数 组中元素的), 例如: int a[5 ]; // 非法
初始化
一维 //1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行 int ids[] = new int[]{1001,1002,1003,1004}; //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行 String[] names = new String[5]; names[0]="钱学森" names[1]="邓稼先" names[2]="袁隆平" //错误的写法: //int[] arr1 = new int[]; //int[5] arr2 = new int[5]; //int[] arr3 = new int[3]{1,2,3}; //也是正确的写法: int[] arr4 = {1,2,3,4,5};//类型推断 二维同理 总结,静态初始化直接赋值,不写数组大小。动态初始化需指定数组的形状(大小)
注意默认初始化值:
数组本身是引用类型,所有在二维数组中,第二维的元素默认为null指针
内存结构
属于概念理解,一维举例string那边有点瑕疵。
一维:
二维:
一维数组访问简单,通过下标就可以,数组名就是数组开始的地址
二维数组的访问需要注意:
package com.atguigu.java; /* 规定:二维数组分为外层数组的元素,内层数组的元素: int[][] arr = new int[4][3]; 外层元素:arr[0],arr[1]等 内层元素:arr[0][0],arr[1][2]等 数组元素的默认初始化值 : 针对于初始化方式一:比如:int[][] arr = new int[4][3]; 外层元素的初始化值为:地址值 内层元素的初始化值为:与一维数组初始化情况相同,为对应元素的默认初始化值 针对于初始化方式二:比如:int[][] arr = new int[4][]; 外层元素的初始化值为:null 内层元素的初始化值为:不能调用,否则报错。 */ public class ArrayTest3 { public static void main(String[] args) { int[][] arr = new int[4][3]; System.out.println(arr[0]);//[I@15db9742 System.out.println(arr[0][0]);//0 // System.out.println(arr);//[[I@6d06d69c float[][] arr1 = new float[4][3]; System.out.println(arr1[0]);//地址值 System.out.println(arr1[0][0]);//0.0 String[][] arr2 = new String[4][2]; System.out.println(arr2[1]);//地址值 System.out.println(arr2[1][1]);//null double[][] arr3 = new double[4][]; System.out.println(arr3[1]);//null // System.out.println(arr3[1][0]);//报错 } }
数组中常用的算法
排序(待总结)
Arrays 工具类的使用
java.util.Arrays 类即为操作数组的工具类 包含了用来操作数组 (比如排序和搜索) 的各种方法
public class ArrayExceptionTest { public static void main(String[] args) { //1. 数组角标越界的异常:ArrayIndexOutOfBoundsExcetion int[] arr = new int[]{1,2,3,4,5}; // for(int i = 0;i <= arr.length;i++){ // System.out.println(arr[i]); // } // System.out.println(arr[-2]); //2.空指针异常:NullPointerException:通过空指针去找值 //情况一: // int[] arr1 = new int[]{1,2,3}; // arr1 = null; // System.out.println(arr1[0]); //情况二: // int[][] arr2 = new int[4][]; // System.out.println(arr2[0][0]); //情况三: String[] arr3 = new String[]{"AA","BB","CC"}; arr3[0] = null; System.out.println(arr3[0].toString()); } }