标签:style class blog code java http
判断如下程序的最终输出值:
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有以下方法:
equals(Object[],Object[])
方法不同,此方法适用于任意深度的嵌套数组。 再简单说一下,上面提到的相等包括==或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 ); } }
输出结果是:
如果按顺序来判断的话,这里有一个意外“red”。但根据二分查找的原理就好解释了:Java使用二分法在数组中查找指定的元素,此时Java认为数组是已经排序好了的,如果在查找的过程中发现了一个适合这个元素的位置那么就会停止查找,返回这个位置对应的值。
胡言乱语,仅作测试,不要较真。
标签:style class blog code java http
原文地址:http://www.cnblogs.com/amunote/p/3796880.html