数组

int[] a = new int[6];

int 表示数组里面存放数据的数据类型

[] 表示数组

a 表示数组名

new 新开辟一个堆内存空间

new int[] 新开辟的类型控件为int 类型的数组

6 表示数组长度

= 将新开辟的空间赋予数组a

数组定义格式:

动态初始化

元素类型[] 数组名 = new 元素类型[10];

元素类型 数组名[] = new 元素类型[10];

静态初始化

元素类型[] 数组名 = {元素1,元素2...};

元素类型[] 数组名 = new 元素类型[]{元素1,元素2...};

区别:动态一开始只知道元素类型和元素个数,不清楚具体的值,在使用的时候赋值

静态在类加载的时候,就已经创建好空间并赋值了。


数组在内存中的理解:

* 数组新创建的时候放在栈里,在堆空间开辟对应数量的空间,预留给栈里的数组
* 数组的实际值在对空间里,并且会赋予默认值
* 栈存放的是堆内存指向的地址,以及基本数据类型的值

* int[] j = null;
* 指向的是一个空,引用时发生的是空指针异常,一般就是对象没有被声明
* 引用时也就是引用了一个未被声明的地址


关于 = 的一个特点:

在堆内存中为数组asd开辟了一片空间,并将地址传给栈中的asd

然后栈中的zxc在执行代码后,获得的是数组asd在堆中的地址,对两个数组其中一个修改,两个数组在引用时的结果相同

所以输出的结果就是45

int[] asd = {1,2,3,4};

int[] zxc = asd;

zxc[2] = 45;

System.out.println(asd[2]);

原文地址:https://www.cnblogs.com/bkytep/p/9614073.html