数组:
静态初始化:
//静态初始化
int[] a = {1,2,3};
动态初始化:
//动态初始化
int[] a = new int[2];
a[0]=1;
a[1]=2;
◆当数组被声明且未初始化时。数组元素将会根据数组类型进行隐式初始化,如int[3] 的初始化结果为{0,0,0}
◆其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。如果越界,则报错。
◆其元素必须是相同类型,不允许出现混合类型。
◆数组中的元素可以是任何数据类型,包括基本类型和引用类型。
◆数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
多维数组:
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一位数组,其每一个元素都是一个一维素组。
int[][] a = new int[2][5]; 可以看为一个两行五列的数组
数组的工具类java.util.Arrays——赋值(赋值)、排序(sort)、查找数组元素(binarySearch)
数组的存储及指向
存储
数组本身就是对象,存储在堆内存中。
数组中的int类型值存储在堆内存还是栈内存?
java的数组变量是一种引用型的变量,数组变量并不是数组本身,他只是指向堆内存中的数组对象。所有局部变量都是存放在栈内存中,不管其是基本类型的变量还是引用类型的变量,都是存储在各自的方法栈区中;但引用类型变量所引用的对象(包括数组、普通java对象)则总是存储在堆内存中。综上,基本类型的数组如{1,2,3},是一个对象,故存在堆内存。
在方法中声明的引用类型的变量存储在哪里?
堆里!
在类下面声明的基本类型变量又是如何存储的?
堆里!
指向
int[] a = new int[5];
int[] b = new int[5];
int[] c = a;
此时 a 和 c 共同指向堆内存中的同一位置。他们的哈希值相同,且不论是a或c的任意一个,对数组元素进行改变,他们都可以访问到改变后的数组。相比之下,b则是一个全新的数组,哪怕它的存储空间大小、类型,甚至元素值都同a、c相同。
网友评论