Java数组1
//元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
int[] arr = new int[3];
内存的划分:
1,寄存器。(CPU处理)
2,本地方法区。(Java虚拟机)
3,方法区。
4,栈内存。
存储的都是局部变量。(定义在方法中的变量,而且变量所属作用域一旦结束,该变量就自动释放)
{//局部代码块。限定局部变量的生命周期。
int age = 3;
System.out.println(age);
}
5,堆内存。
存储是数组和对象(其实数组就是对象)
凡是new建立在堆中。
特点:
1)每一个实体都有首地址值。
2)堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同。整数是0,小数0.0或者0.0f,boolean是false,char是’\u0000’。
3)垃圾回收机制。
arr = null; //取消了引用,堆成了垃圾
int[] arr = new int[3];
System.out.println(arr[3]);
/*ArrayIndexOutOfBoundsException(数组越界异常)
当访问到数组中不存在的角标时,就会发生该异常。*/
arr = null;
System.out.println(arr[0]);
/*NullPointerException(空指针异常)
当引用型变量没有任何实体指向时,还在用其操作实体。就会发生该异常。 */
System.out.println(arr);
/* [I@c17164
第一位 “[” 是表示数组形实体,第二位表示数组中是int类型的数据
第三位到最后表示哈希值。*/
数组是什么?
数组是一种引用数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,
可以用一个统一的数组名和不同的索引(角标)来唯一确定数组中的元素。
根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。
数组有什么特点?
- 数组可以是一维数组、二维数组或多维数组。
- 数值数组元素的默认值为 0,而引用元素的默认值为 null。
- 数组的索引从 0 开始,如果数组有 n 个元素,那么数组的索引是从 0 到(n-1)。
- 数组元素可以是任何类型,包括数组类型。
- 数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。数组保存的仅仅是对象的引用,而不是对象本身。
数组什么时候使用?
确定了数据量后,可以用数组来存数据。但数据类型要相同。
java的内存(栈和堆)的特点?
**栈**:
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。
当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,
java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
**堆**:
凡是new的对象和数组都建立在堆中。
每一个实体都有首地址值。
堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同。整数是0,小数0.0或者0.0f,boolean是false,char是'\u0000'。
垃圾回收机制。(arr = null; //取消了引用,成了垃圾)
数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用。但是仍然占着内存,在随后
的一个不确定的时间被Java垃圾回收器释放掉。这个也是java比较占内存的主要原因。