Java数组

来源:互联网 发布:windows无法连接到cmcc 编辑:程序博客网 时间:2024/06/08 16:47

1.Java的数组变量是引用类型的变量——数组变量存在栈中,数组对象存在堆中。

2.Java数组的2种初始化方式

  所谓初始化,即在堆中创建数组对象,也就是在内存中为数组对象分配一块连续的内存空间,并为每个数组元素指定初始值。

  对于数组变量来说,它并不需要所谓的初始化,只要让数组变量指向一个有效的数组对象,程序即可正常使用该数组变量。

1)静态初始化

    由程序员指定每个元素的初始值,由系统决定长度。

    

int[] arr = new int[]{1, 2, 3, 4, 5};//静态初始化int[] arr = {1, 2, 3, 4, 5};//静态初始化的简化形式

2)动态初始化

    程序员指定数组长度,系统为每个元素分配初始值(0, 0.0,null,FALSE)。

int[] arr = new int[5];//动态初始化

注:不要同时使用两种初始化方式, int[] arr = new int[5]{1, 2, 3, 4, 5},这种形式是错误的!


3.局部变量必须由程序员赋初值。


4.“基本类型变量的值存储在栈中”这句话是完全错误的。例如:上面的int型arr数组中的每个值都存在堆中。

实际上应该说:所有局部变量都是放在栈里保存的,不管其是基本类型的变量还是引用类型的变量,都是存储在各自的方法栈内存中的;但引用类型变量所引用的对象(包括数组、普通的java对象)则总是存储在堆中的。



From《疯狂JAVA程序员的基本修养》

原创粉丝点击