数组
数组的初始化有以下两种方式。
- 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
- int[ ] a= {0} int[] a=new int[]{0}
- 程序员无须指定数组长度,指定该数组的 数组元素,由系统来决定该数组的长度即可
- 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。
- int[] a=new int[3];
- 执行动态初始化时,程序员只需指定数组的长度,即为每个数组元素指定所需的内存空间,系统将负责为这些数组元素分配初始值
Java 数组是静态的,一旦数组初始化完成,数组元素的内存空间分配即结束,程序只能改变数组元素的值,
而无法改变数组的长度。
Java 的数组变量是一种引用类型的变量,数组变量并不是数组本身,它 只是指向堆内存中的数组对象。
因此,可以改变一个数组变量所引用的数组,这样可以造成数 组长度可变的假象
基本类型 数组的初始化比较简单:程序直接先为数组分配内存空间,再将数组元素的值存入对应内 存里。
对于很多Java 程序员而言,他们最容易混淆的是:
引用类型的变量何时只是栈内存中的 变量本身,何时又变为引用实际的Java 对象。
其实规则很简单:
引用变量本质上只是一个指 针,只要程序通过引用变量访问属性,或者通过引用变量来调用方法,该引用变量就会由它所 引用的对象代替。
凡是以关键字new创建的对象,Java虚拟机jvm都会在堆内存中开辟一个新的内存空间,创建一个新的对象
基本数据类型声明时开辟的空间,引用数据类型在(new)初始化时开辟空间