| 数组元素类型 | 默认初始值 |
| byte | 0 |
| short | 0 |
| int | 0 |
| long | 0L |
| float | 0.0F |
| double | 0.0 |
| char | 0或’\u0000‘ |
| boolean | false |
| 引用数据类型 | null |
内存结构可分为三部分:
栈:存放局部变量(例如方法内的变量)。
堆:存放new出来的结构,如类的对象、数组等等。
方法区:包括静态域、常量池等。
如下图代码所示,在 main() 方法内创建了两个一维数组:arr1、arr,其实就是两个指针变量。它们两个在栈中存储,分别指向数组第一个元素,也就是说它们存放的是地址值。
如果我给arr1重新new了一个数组,那堆中就会在新的地址(0x5566)上划分一块数据区域,arr1会指向这个新区域,而舍弃掉原来的那个区域(0x12ab)。

对于二维数组的理解,我们可以看成是一维数组 array1又作为另一个一维数组array0的元素而存在。其实,从数组底层的运行机制来看,没有所谓多维数组,本质上就是套娃。
同样看下面的图,在main() 中创建arr1数组,指定4行,但没有指定列。那就在栈中创建一个指针变量arr1,堆中创建一个存放4个数据的区域(0x1234),让arr1指向这个区域。
接下来每new一个列,就在堆中创建出一块数据区域,并让0x1234区域中的元素指向新区域。这样的话,arr1 和 arr1[i] 中存放的就都是地址了。这不就是套娃嘛?

首先 import java.util.Arrays
1. Array.equals(int[] a,int[] b) 判断两个数组是否相等
2.Arrays.toString(int[] a) 数组内容转为String格式输出
3 Array.fill(int[] a,int val) 将指定值填充到数组之中
4 Array.sort(int[] a) 对数组进行排序
5 Array.binarySearch(int[] a,int key) 对排序后的数组二分查找指定的值