zoukankan      html  css  js  c++  java
  • (二)Java数组特性总结,你真的了解数组吗?

    一、数组的特殊性

    (一)数组标识符是一个引用,指向堆中创建的一个真实对象,这个对象(数组)保存了指向保存其他对象的引用。

    (二)数组中保存引用类型时保存的是对象引用,基本数据类型数组保存基本数据的值。

    (三)数组的length只表示数组能够容纳多少元素,不能保存实际保存的元素个数。

    (四)多维数组可以使用Arrays.deepToString()将多维数组转换成String

    (五)不能使用泛型创建数组,例如:

      T []list=new T[size];//会报错

    解决方法:

      使用Object转型:

      Object [] objs=new Object[size];

      T []Objs=(T[])objs;

    二、Arrays实用功能

    (一)Array常用函数

      1.Array.equals()用于比较两个数组是否相等(deepEquals用于多维数组)

      2.Array..fill()用于填充数组

      3.Array.sort()用于对数组排序

      4.Array.binarySearch()用于在已经排序的数组中查找元素

      5.Array.toString()产生数组的String表示

      6.Array.hashCode()产生数组的散列码

      7.Array.asList()接受任意的序列或数组作为参数,将其转变成List容器

    (二)复制数组

      System.arraycopy(),使用此函数复制数组将会比for循环快很多。

      格式System.arraycopy(src,beginIdex1,des,beginIndex2,length);

      src:源数组  beginIndex1源数组开始复制的位置

      des目的数组beginIndex2 目的数组开始被赋值的位置

      length: 复制的长度

    (三)数组的比较

    Arrays.equals()方法,可以比较整个数组。数组相等的条件是元素个数相同,并且对应位置的元素也相等(通过调用每个元素的equals()作比较,基本类型调用对应包装类的equals()方法)

    (四)数组元素的比较

    Java通过使用策略设计模式来实现了不同元素的比较大小。

    策略模式:将“会发生变化的代码”封装在单独的类中(策略对象),在其他类中,通过调用策略对象的方法实现不同的策略对象,结果不同的目的;

    Java提供了两种方式来提供比较功能。

    一种是实现java.lang.Comparable接口,让你的天生具有比较能力。此接口只有一个compareTo()方法,接受一个和本对象比较的另外一个对象,如果比它小就返回负数,相等为0,比它大就是正数。

    示例:

       

    测试代码:

     

    运行结果:

     

    另一种就是我们编写自己的comparator比较类,继承Comparator接口,实现compare方法,此方法有两个参数,即我们比较的两个对象。

    示例:

     

    测试代码:

     

    运行结果:

     

    总结:

    自动包装机制和泛型的加入使得容器比数组更加灵活且富有优势。在java编程中,应该优先选用容器而不是数组,只有已证明性能成为问题(数组比容器对性能提高更多)时,才应该将程序重构为使用数组。

  • 相关阅读:
    No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s).
    播放器 倒计时 闹钟 日期 分秒 时间算法
    iOS 8 以后获取地图坐标:
    数据存储(直接写入、NSUserDefaults、NSkeyedArchiver)
    图片处理 模糊效果
    手把手教你Windows下Go语言的环境搭建
    github 上传或删除 文件 命令
    域名解析-delphi 源码
    指针与引用
    指针
  • 原文地址:https://www.cnblogs.com/chenkeyu/p/7573459.html
Copyright © 2011-2022 走看看