美文网首页
Java编程思想(十三)

Java编程思想(十三)

作者: MikeShine | 来源:发表于2019-05-25 11:25 被阅读0次

    第16章 数组

    到现在,你对数组的认识停留在:可以创建组装、通过索引访问、长度不可变。
    下面,我们了解一下数组比较高级的东西

    16.1 数组为什么特殊

    数组、容器这种,都叫做 持有对象 的方式。
    但是数组在以下三个方面有优点:

    • 效率高。
      数组是效率最高的存储和随机访问对象引用序列的方式。数组是一个简单的线性序列,所以效率高,代价就是长度被固定。
    • 类型
      个人理解就是可以直接存具体的类型,编译器可以检查类型匹配与否。
    • 保存基本数据能力
      数组可以持有基本数据类型,而没有泛型的容器是不行的。

    16.2 数组是第一级对象

    这里说了基本类型数组 和 其他对象数组的区别。二者基本没有区别,只是存放的对象不同,其他方法都相同。

    16.3 返回一个数组

    在 C/C+ 中,在返回数组操作时,由于只能返回指向数组的指针,容易造成内存泄漏,生命周期控制十分困难。
    但是在 java 中,由于有辣鸡回收器的存在,所以直接来 “返回一个数组” 就完事了。

    16.4 多维数组

    直接看代码,在多维数组这里有一个 Arrays.deepToString() 方法。

    public static void main(String args[]){
            int[][] a ={
                    {1,2,3},
                    {4,5,6}
                    };
            System.out.println(Arrays.deepToString(a));
        }
    

    16.5 数组与泛型

    数组这里基本不会用到泛型。但是书上给出了一个非常特殊的例子,用以说明 java 理论上是支持这种定义方式的。

    16.6 创建测试数据

    这一小节给出了几种填充数组的方法。用于我们将数据填入数组。

    • Arrays.fill() :用一个值填充各个位置
    int[] a = new int[6];
    Arrays.fill(a,1);  // 全部填充 1
    Arrays.fill(a,,1,4,2);  // 指定位置填 2
    
    • 数据生成器 Generator
      看不懂,作者这里提供了非常多的 Generator。

    16.7 Arrays 实用功能

    这一个小节作者给出了 Arrays类中的一些比较常用的方法。

    • System.arraycopy()
      这个方法不属于 Array 类,但是用这个复制比 用 for循环快很多。该方法对所有类型进行了重载。
    System.arraycopy(i,start,j,start,length)  // 4个参数
    
    • Arrays.equals()
      比较两个数组是否相等(每个元素都相等)。
    • Arrays.sort()
    • Arrays.binarySearch()
      在有序数组中快速查找,两个参数,目标数组+target

    16.8 总结

    没啥总结的

    相关文章

      网友评论

          本文标题:Java编程思想(十三)

          本文链接:https://www.haomeiwen.com/subject/qtlazqtx.html