# 数组的特殊性

本文深入探讨了Java中数组的特点及使用技巧,包括数组的局限性、多维数组的应用、数组与泛型的问题、如何填充数组等内容,并介绍了Arrays类提供的实用功能,如数组复制、元素比较、排序和查找等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组的特殊性

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

​ 《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)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值