J2SE-API:数组的常用操作与相关问题

本文仅作为总结之用,详细内容可以查看数组的相关资料:点我查看

通常,在你确定元素个数不会发生变化时就可以直接使用数组,会拥有更好的性能。在有了泛型之后,如果能用集合的地方就不推荐使用数组。

Arrays工具类常用方法

static <T> List<T>asList(T... a)  返回一个受指定数组支持的固定大小的列表。这种方式生成的List大小是不可变的。
static voidsort(byte[] a)
          对指定的 byte 型数组按数字升序进行排序。
static voidsort(byte[] a, int fromIndex, int toIndex)
          对指定 byte 型数组的指定范围按数字升序进行排序。
static
<T> void
sort(T[] a, Comparator<? super T> c)
          根据指定比较器产生的顺序对指定对象数组进行排序。
static
<T> void
sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)
          根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。
static String

toString(boolean[] a)
          返回指定数组内容的字符串表示形式。(此处仅用boolean类型作为示例,其他合法的数据类型都可以)。字符串表示形式由数组的元素列表组成,括在方括号("[]")中。相邻元素用字符 ", "(逗号加空格)分隔。这些元素通过 String.valueOf(float) 转换为字符串。如果 a 为 null,则返回 "null"。

……如果真的有这种需求,其实可以直接使用String的静态方法valueOf()的,更直接。

数组的复制

推荐使用System 类的静态方法arraycopy() 方法来将一个数组的元素复制到另一个数组中进行替换

static voidarraycopy(Object src, int srcPos, Object dest, int destPos, int length)
          从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

补充

1、突然遇到一个问题,我有点懵逼,就是数组长度固定之后怎么向这个数组中赋值?一开始下意识就是有没有像集合那样的方法来进行赋值,之后又想到数组虽然也是对象,但是它本身没有任何操作的方法。要想赋值?直接arr[0] = "data"不就行了。

2、遇到一个问题,把数组的地址和值搞混了。我一开始的思路是:我只是要数组里面的值,所以就想着节约内存,在循环体外面定义一个一维数组,然后每次循环给该数组赋值,赋值完成之后又把这个一维数组赋值给一个二维数组,以达到把所有的一维数组的值都装到二维数组中的目的。但是结果发现,这个二维数组中的值都是一样的,而且都是最后一次的结果。

为什么会这样呢?因为我每次赋值的都是同一个一维数组,所以二维数组中的每一个值都指向同一个地址,而这个地址所指向的一维数组的值在不断替换,直到最后一次。

其它对象比如集合,也可能会出现这样的问题,就是因为把对象地址和值给搞混了。解决方法就是每次循环都创建一次对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值