数组
基础
//声明数组
double[] price;
//数组初始化
price = new double[]{20,32,43.21};
String[] foods;
foods = new String[4];
//要么把数组里面的变量写出来,要么指定长度
int arr[] = new int[4];
int arr1[] ={1,2,3,4};
//将arr的地址赋给arr2
int arr2[] =arr
//数组初始化后长度就确定了,不可变
//数组元素的调用
System.out.println(price[0]);
//数组长度
System.out.println(arr1.length);
//遍历数组
for(int i=0;i<arr1.length;i++){
System.out.println(arr1[i]);
}
数组元素默认初始化值的情况
整形数组:0
浮点型数组:0.0
字符型数组:0
boolean型数组:false
引用数据型数组:null
一维数组内存解析
数据结构:声明的数组变量名会被存放到对应方法的栈帧中它的值是数组值的内存首地址,数值的值存放在堆中对外只暴露首地址值
二维数组
前面这些声明啊啥都的差不多,单括号变为两个括号。
重点就在于内存解析,二维数组就是创建个一维数组然后一维数组中的每个值存放的是另一个一位数组的地址,从图上就能很好看出来。
Arrays工具类
比较两数组内容是否相等 Arrays.equals
输出数组元素信息 Arrays.toString
快速排序 Arrays.sort
二分查找Arrays.binarySearch
企业真题
1.数组有没有length()这个方法?String有没有length()这个方法?
数组没有length是属性,String有
2为什么数组要从0开始编号,而不是1
数组的索引,表示了数组元素距离首地址的偏离量。因为第1个元素的地址与首地址相同,所以偏移量就是0.所以从0开始
3.快速排序,时间复杂度
4.数组最大子序列和