本文仅作为总结之用,详细内容可以查看数组的相关资料:点我查看。
通常,在你确定元素个数不会发生变化时就可以直接使用数组,会拥有更好的性能。在有了泛型之后,如果能用集合的地方就不推荐使用数组。
Arrays工具类常用方法
static | asList(T... a) 返回一个受指定数组支持的固定大小的列表。这种方式生成的List大小是不可变的。 |
static void | sort(byte[] a) 对指定的 byte 型数组按数字升序进行排序。 |
static void | sort(byte[] a, int fromIndex, int toIndex) 对指定 byte 型数组的指定范围按数字升序进行排序。 |
static
| sort(T[] a, Comparator<? super T> c) 根据指定比较器产生的顺序对指定对象数组进行排序。 | |
static
| sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c) 根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。 |
static String |
……如果真的有这种需求,其实可以直接使用String的静态方法valueOf()的,更直接。 |
数组的复制
推荐使用System 类的静态方法arraycopy() 方法来将一个数组的元素复制到另一个数组中进行替换
static void | arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 |
补充
1、突然遇到一个问题,我有点懵逼,就是数组长度固定之后怎么向这个数组中赋值?一开始下意识就是有没有像集合那样的方法来进行赋值,之后又想到数组虽然也是对象,但是它本身没有任何操作的方法。要想赋值?直接arr[0] = "data"不就行了。
2、遇到一个问题,把数组的地址和值搞混了。我一开始的思路是:我只是要数组里面的值,所以就想着节约内存,在循环体外面定义一个一维数组,然后每次循环给该数组赋值,赋值完成之后又把这个一维数组赋值给一个二维数组,以达到把所有的一维数组的值都装到二维数组中的目的。但是结果发现,这个二维数组中的值都是一样的,而且都是最后一次的结果。
为什么会这样呢?因为我每次赋值的都是同一个一维数组,所以二维数组中的每一个值都指向同一个地址,而这个地址所指向的一维数组的值在不断替换,直到最后一次。
其它对象比如集合,也可能会出现这样的问题,就是因为把对象地址和值给搞混了。解决方法就是每次循环都创建一次对象。