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编程中,应该优先选用容器而不是数组,只有已证明性能成为问题(数组比容器对性能提高更多)时,才应该将程序重构为使用数组。

  • 相关阅读:
    VS 2008潜在强大的功能:提取EXE文件中的ICO等资源
    园友们注意:淘宝网上QQ会员 4钻 3元 等都为骗子行为
    Comet Async Process Request Handler
    WCF(Sender) to MSMQ to WCF(Receiver)
    ASP.NET Web Form GridView DetailsView Query Edit
    WCF NetTcp AsyncQueue Service
    Xml CDATA 序列化
    Sync Invoke Remoting Async Invoke
    .Net 4.0 Remoting ConcurrentQueue
    Socket Async Receive Data to LinkedList Buffer (telnet proxy server)
  • 原文地址:https://www.cnblogs.com/chenkeyu/p/7573459.html
Copyright © 2011-2022 走看看