读书笔记一 Java程序员的基本修养(数组及其内存管理)

1.1 数组初始化

  1.1.1 java数组是静态的

java数组被初始化之后,该数组所占的内存空间、数组长度都是不可变的。

java程序中的数组必须经过初始化才可使用。

数组的初始化有两种方式:

  1) 静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度。

  2) 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。

*不要同时使用静态初始化和动态初始化方式。

java的数组变量是一种引用类型的变量,数组变量并不是数组本身,它只是指向对内存中的数组对象。

/**

javaScript这种动态语言的数组长度是可以动态改变的。

**/

  1.1.2 数组一定要初始化吗

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

  1.1.3 基本类型数组的初始化

程序直接先为数组分配内存空间,再将数组元素的值存入对应内存里。

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

引用变量本质上只是一个指针,只要程序通过引用变量访问属性。或者通过引用变量来调用方法。该引用变量就会由它所引用的对象代替。

  1.1.4 引用类型数组的初始化

引用类型数组的数组元素依然是引用类型的,因此数组元素里储存的还是引用,它指向另一块内存,这块内存里存储了该引用变量所引起的对象(包括数组和java对象)

1.2 使用数组

java语言不允许直接访问堆内存中的数据,因此无法直接访问堆内存中的数组对象,只用通过数组引用变量来访问数组。

*java语言避免直接访问堆内存中的数据可以保证程序更加健壮,如果程序直接访问并修改堆内存中的数据,可能会破坏内存中的数据完整性,从而导致程序Crash。

  1.2.1 数组元素就是变量

当一个数组初始化完成后,就相当于定义了多个类型相同的变量。

  1.2.2 没有多维数组

所谓多维数组,其实就是数组元素依然是数组的一位数组。

上一篇:POJ3349: Snowflake Snow Snowflakes(hash 表)


下一篇:iOS视图弹出、平移、旋转、翻转、剪切等变换效果实现