zoukankan      html  css  js  c++  java
  • scjp考试准备

    判断如下程序的最终输出值:

    import java.util.*;
    public class Quest{
        public static void main(String[] args){
           String[] colors = {"blue", "red", "green", "yellow", "orange"};
           Arrays.sort(colors);
           int s2 = Arrays.binarySearch(colors, "orange");
           int s3 = Arrays.binarySearch(colors, "violet");
           
           System.out.println(s2 + "" + s3);
        }
    }

    这道题考察的是对数组操作工具类Arrays的掌握。

    翻了下文档,Arrays有以下方法:

    1. asList(T... a) :返回一个受指定数组支持的固定大小的列表。与之对应的是Collection.toArray()方法。(注意这里的参数不是数组)
    2. binarySearch(type[] a, type key):使用二分法搜索数组a,以获取指定值key在数组中的位置。如果key在数组a中存在,则返回key在a中的索引;如果key在数组a中不存在,那么返回的值为(key插入数组a后的索引+1)*-1
    3. copyOf(type[] original, int newLength) :从索引0开始复制指定长度的数组,不足用 0或者null 填充
    4. copyOfRange(type[] original, int from, int to) :将指定数组的指定范围复制到一个新数组,不足用0或着null填充
    5. deepEquals(Object[] a1, Object[] a2) :如果两个指定数组彼此是深层相等 的,则返回 true。与 equals(Object[],Object[]) 方法不同,此方法适用于任意深度的嵌套数组。
    6. deepHashCode(Object[] a) :基于指定数组的“深层内容”返回哈希码。如果数组包含作为元素的其他数组,则哈希码将基于其内容,并以此类推,直至无穷。对于任何两个满足 Arrays.deepEquals(a, b) 的数组 ab,也可以说 Arrays.deepHashCode(a) == Arrays.deepHashCode(b)
    7. deepToString(Object[] a) :返回指定数组“深层内容”的字符串表示形式。如果数组包含作为元素的其他数组,则字符串表示形式包含其内容等。此方法是为了将多维数组转换为字符串而设计的。
    8. static boolean equals(type[] a, type[] a2) :如果两个指定的 数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的
    9. fill(type[] a, type val) :将指定类型的值val,分配给相同类型的的数组a中的每个元素
    10. hashCode(type[] a):基于数组的内容返回哈希码
    11. sort(type[] a):按照自然顺序对数组进行排序
    12. sort(T[] a, Comparator<? super T> c) 根据指定比较器产生的顺序对指定对象数组进行排序
    13. toString(boolean[] a) :返回指定数组内容的字符串表示形式

    再简单说一下,上面提到的相等包括==或equals两种判定的结果;deep开头的方法主要用于嵌套数组。

    这道题中先使用Arrays.sort()方法对数组进行排序,而后在进行查找。排序后,按自然顺序,“orange”会置于第三位,索引为2。“violet”在数组中不存在,插入数组后则会置于第五位,索引为4。那么这道题的返回值就是(2) + “” + ((4+1)*-1 )即“2-5” 。

    不妨试试不进行sort(),直接查找看看返回什么结果。对原程序稍作修改:

    import java.util.*;
    public class Quest{
        public static void main(String[] args){
           String[] colors = {"blue", "red", "green", "yellow", "orange"};
           //Arrays.sort(colors);
           int s2 = Arrays.binarySearch(colors, "violet");
           int s3 = Arrays.binarySearch(colors, "blue");
           int s4 = Arrays.binarySearch(colors, "red");
           int s5 = Arrays.binarySearch(colors, "green");
           int s6 = Arrays.binarySearch(colors, "orange");
           int s7 = Arrays.binarySearch(colors, "yellow");
           int s8 = Arrays.binarySearch(colors, "dark");
           
           System.out.println(s2 + "," + s3 + "," + s4 + "," + s5 + "," + s6 + "," + s7 + "," + s8 );
        }
    }

    输出结果是:

    image

    如果按顺序来判断的话,这里有一个意外“red”。但根据二分查找的原理就好解释了:Java使用二分法在数组中查找指定的元素,此时Java认为数组是已经排序好了的,如果在查找的过程中发现了一个适合这个元素的位置那么就会停止查找,返回这个位置对应的值。

    胡言乱语,仅作测试,不要较真。

  • 相关阅读:
    STM32 F4 DAC DMA Waveform Generator
    STM32 F4 General-purpose Timers for Periodic Interrupts
    Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
    Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
    查看SQL Server服务运行帐户和SQL Server的所有注册表项
    Pycharm使用技巧(转载)
    SQL Server 2014内存优化表的使用场景
    Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用 optparse argparse
    Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
    Python第六天 类型转换
  • 原文地址:https://www.cnblogs.com/amunote/p/3796880.html
Copyright © 2011-2022 走看看