# 数组的特殊性

数组的特殊性

​ 无论使用哪种类型的数组,数组标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个(数组)对象用以保存指向其他对象的引用。

​ 《Java编程思想》

1. 局限性

1.1 数组对象的只读成员length :表示该数组能够容纳多少元素

1.2 数组有个缺点:无法直接知道该数组保存了多少元素,但是可以通过统计默认值的个数来大概知道数组保存的元素数量,例如:引用类型数组初始对象都是null,数值类型数组初始化值为0

2. 多维数组

数组中构成矩阵的每个向量都可以具有任意的长度(这被称为粗糙数组)

参考代码:

import java.util.*;

public class RaggedArray{
  public static void main(String[] args){
    Random rand = new Random(47);
    int[][][] a = new int[rand.nextInt(7)[][];
    for(int i=0;i<a.length;i++){
        a[i] = new int[rand.nextInt(5)][];
        for(int j=0;j<a[i].length;j++){
            a[i][j] = new int[rand.nextInt(5)];
        }      
    }
  }
}
3. 数组和泛型

3.1 Java无法实例化带有泛型的数组,例如:

List<Integer>[] ar = new ArrayList<Integer>[];

会报以下编译错误:Cannot create a generic array of ArrayList

4. 填充数组

4.1 Arrays.fill(Object[],object)

5. Arrays实用功能

5.1 复制数组

​ 不属于Arrays,属于System,使用方法:System.arraycopy(原数组,表示从原数组中的什么位置开始复制的偏移量,目标数组,表示从目标数组开始复制的偏移量,以及需要复制的元素个数)。

5.2 数组元素的比较

​ 主要涉及Comparator和Comparable接口,可参考博文:http://www.cnblogs.com/sunflower627/p/3158042.html

5.3 数组排序

​ 排序的前提是实现Comparator或者Comparable接口,使用Arrays.sort(数组)

的方法进行排序。

Java标准类库中的排序算法针对正排序的特殊类型进行了优化——针对基本类型设计的“快速排序”,以及针对对象设计的“稳定归并排序”。

5.4 数组中查找

​ 查找的前提是数组已经进行了排序,然后使用Arrays.binarySearch()执行查找。查找成功则返回元素索引,查找失败返回负值,该负值表示目标元素应该插入的位置(计算方法:- 插入点 - 1)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值