Task03: 数组

今天在群里看到一句话,“...但实际上它是仿造了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类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值