数组的声明与初始化
问题由来
int[] arrays;
// arrays = {1,2};
// arrays = int[2];
// arrays = int[] {1,2};
int[] arr=new int[] {2,3};
数组arrays声明后,无法进行初始化(或者说是我不知道如何进行初始化,qaq~)
深层剖析
1.初始化分为静态初始化和动态初始化
静态:int[] a = {1,2,3,4,5};
动态:int[] b=new int[5];
2.数组一定需要初始化吗
### 数组变量和数组对象是不同的
数组变量是引用类型的变量,数组变量是指向堆内存当中的数组对象,并不是数组本身(即并不分配内存空
间);
所以,对于数组变量来说,它并不需要初始化,我们常常说的初始化其实是初始化数组对象,而并非数组变量,
因此,我们不进行初始化,而让数组变量指向一个有效的数组对象,数组也是可以使用的;
eg
int[] arrays;
// arrays = {1,2};
// arrays = int[2];
// arrays = int[] {1,2};
int[] arr=new int[] {2,3};
arrays=arr;
总结
1.对一个数组进行声明后,就产生了一个数组变量,但数组变量不一定需要初始化,它只需要指向一个有效的数组对象即可
2.切记不可将数据直接赋给已声明的数组变量,因为数据变量只指向数组对象,即已分配内存地
址的数组/new了的数组。
3.那为什么静态初始化指向的是一堆数据,而不是数组对象呢
那是因为静态初始化是int[] a=new int[]{1,2,3,4,5};的简化