Java 数组
数组
数组长度一旦确定就不能修改
数组是一种特殊的类,因为它也继承了Object
一维数组的使用
1.声明和初始化,初始化时要指定长度
2.数组的长度,属性length
3.数组元素的默认初始化值 -> 整型(byte、short、int、long)0,浮点型(float、double)0.0,char型(ACSII=0),布尔型false(0),引用数据类型null。
//静态初始化
//int ids[] = 这种写法也可以
int[] ids = new int[]{1001,1002,1003}
int arr[] = {1234,5}; //类型推断
//动态初始化,分配了5个空间
String[] names = new String[5];
一维数组的内存解析
虚拟机栈(stack):局部变量。
堆(heap):new出来的结构,对象(非static的成员变量)、数组
方法区:常量池(String...) + 类信息(方法) + 静态变量...
当局部变量没用之后,会依次出栈,堆里的空间会在一个不确定的时间被回收。
二维数组的使用
//静态初始化,可以省略new int[][]
int[][] arr = new int[][]{{123},{4,5}};
int arr[][] = {{123},{4,5}}; //类型推断
//动态初始化[[0,0],[0,0],[0,0]]
String[][] arr2 = new String[3][2]
//动态初始化 第二维可以先不指定
//行数必须要指定,列数可以先不指定
String[][] arr2 = new String[3][]
a[0] = new String[3];
a[1] = new String[4];
Arrays工具类
java.util.Arrays类为操作数组的工具类
Arrays.equals(arr1,arr2) 判断两个数组是否相等,返回布尔值
Arrays.toString(arr) 输出数组信息,返回String。常用
Arrays.fill(arr,val) 将val填充到arr数组中,返回void
Arrays.sort(arr) 数组排序,返回void
Arrays.binarySearch(arr,key) 二分查找key,arr需要有序,返回数组下标int,没找到返回负数
Arrays.copyOfRange(T[ ] original,int from,int to)将一个原始的数组original,从下标from开始复制,复制到上标to,生成一个新的数组返回