今天在群里看到一句话,“...但实际上它是仿造了C才同样这样封装”,然后,感觉这一篇又可以迅速过(shui 掉了。maybe。
3.1 数组创立
//元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
//这里和C不一样,[]在数组名前后边都行,但建议放前边;
int [] arr = new int [10];
* java在给数组分配空间时,必须指定数组能够存储的元素个数来确认数组的大小,且创建数组后不能修改数组大小(数组长度固定);可以使用length属性获取数组大小,二维数组length属性其实也是吧二维拆成一维存储一维数组的数组。
3.2 数组初始化
int[] arr1 = new int[2];
arr1[0] = 10;
arr1[1] = 20;
int[] arr2 = new int[]{1,2,3};
int[] arr3 = {1,2,3};
3.3 内存分析
1. 栈内存:栈内存存储的都是局部变量,变量一旦出了自己的作用域,那么就会马上从内存的消失,释放内存空间。
2. 堆内存:堆内存存储的都是对象内存,对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时的把垃圾对象回收,这时候该对象才会消失,释放内存。(JVM自动,真好,c++手动delete)
3. 凡是以new关键字创建的对象,JVM都会在堆内存中开辟一个新的空间,创建一个新的对象。
4. 对象如果没有变量引用了,那么该对象就是一个垃圾对象了。
3.4 二维数组
3.4.1 二维数组的创建和赋值
int arr1[][];
char[][] arr2; //声明,[][]前后都OK;
int a[][];
a = new int [3][4]; //直接分配行列;
int b[][];
b = new int [2][];
b[0] = new int [3];
b[1] = new int [3]; //先行后列;
//赋值;
int c[][] = new int [][]{{1,2,3},{4,5,6}};
int e[][] = new int {{7,8,9},{1,2,3}};
b[0][1]=10;//单个赋值;
3.4.2 多维数组
java允许多维数组,但容易操作错误,如果需要存储复杂数据,推荐使用集合类或自定义类集合类包括List、Map等。
3.4.3 不规则数组
java支持不规则数组,即不为矩阵型的。
int a[][] = new int [3][];
a[0] = new int [3];
a[1] = new int [2];
a[2] = new int [1]; //不知道C可不可以
4. Last
· 为什么数组从0开始捏,其实数组名就是一个指向数组第一个位置的指针,[]里的值是偏移量,且由于数组内数据类型一样,一个值所占内存大小就是一个偏移值的大小,考虑到的是计算机内存寻址的问题。
· 关于数组的相关操作可以去了解一下Arrays类。