您当前的位置: 首页 >  Java

星拱北辰

暂无认证

  • 0浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Java】数组的注意事项

星拱北辰 发布时间:2019-09-26 22:02:01 ,浏览量:0

1.要知道,数组也是一种类型。Java数组不是基本类型,而是引用类型。 int是基本类型,但int[] 就是引用类型了。

2.一个数组需指定类型,只能存放一种类型的元素。 如果我们在一个泛型类里面写:

T[] t = new T[5];

这会引发编译错误(CE),因为T并不是可确定的类型。 我们应该这么写:

T[] t = (T[]) new Object[5];

这时会报黄色的Warning (起码Eclipse有),可以用@SuppressWarning(“unchecked”)修饰方法,避免编译警告,但是需要小心ClassCastException。

3.数组长度虽然可以动态确定,但是一旦定长,就不可改变。 毕竟,数组长度的获取是用其length属性获取的,这个属性是public的,但由于被final修饰,只能读不能改。 不允许这样写(CE):

int[] a = new int[5];
a.length = 1;

2.不允许这样写(CE):

int[] b = new int[3] {1, 2, 3};

4.数组变量处存的不是数组元素,而是数组的引用。 举个例子比较形象: 比如有c{1, 2, 3}和d{4, 5, 6, 7},假设数组变量内存区存数组本身,如果有c = d;语句,则c处空间是不够的。这样举例子也许不是那么合适,但是数组变量处确实存的只是引用。

5.数组长度不可变,但是由于所谓的“赋值语句”本质上只是改变了数组变量存放的引用,所以表面上“数组长度可变”,然这是错误的。

6.int[] 是一维数组,int[][] 是二维数组,那么能否从int[]出发扩展到n维数组? 答案是no,因为Java是强类型语言,int[]中引用的是int类型,所以不能再指向int[],这在js里或许可以,但Java中不行。

7.操作数组的类在java.util包里,类名是Arrays,里面有很多static方法可供使用。

8.数组也可以用foreach循环来遍历

9.由于数组是引用类型,所以不new一个对象,默认是null

10.多个相同类型、具有逻辑关系的对象(或基本类型)可以用数组存放。数组随机存取,存取O(1),很方便,而且按索引寻址,很快。但是也是因为数组的“定长”,使得它显得没有集合框架使用方便,比如ArrayList。但是对于编写数据结构,如顺序表、顺序栈等数组很方便;甚至矩阵的压缩存储也是用了一维数组,简单的二维矩阵也可以用二维数组表示…用好数组也是Java的基本能力。

11.Java封装了数组的底层实现,就好比基本类型。但还是要强调:Java数组不是基本类型!

关注
打赏
1660750074
查看更多评论
立即登录/注册

微信扫码登录

0.0400s