Java数组和继承

时间:2015-05-20 09:50:22

标签: java arrays inheritance

我一直认为任何数组类型都是不同的类,但似乎任何引用类型数组也被认为是Object []及其超类的数组形式的对象。 (这完全正确吗?)

考虑以下数组

Integer[] numbers = { 20, 15, 10, 5 };

当我将此数组传递给期望Object []值的Arrays.sort时,它可以正常工作。但是Object没有任何比较方法,它如何知道使用哪种比较方法?

2 个答案:

答案 0 :(得分:4)

Integer实现了Comparable<Integer>,它定义了整数的自然顺序。在没有sort的情况下调用Comparator依赖于数组的元素来实现Comparable,并使用该接口的compareTo方法。

答案 1 :(得分:0)

Arrays.sort用于原始类型对象

根据数组元素类型,使用sort1对这些进行排序,但这些sort1方法是私有的。

  1. 如果你想要对int数组进行排序。所以你将使用方法sort(int[] a)。它将调用私有方法sort1:

    private static void sort1(int x [],int off,int len){...}

  2. 此方法说明为Sorts the specified sub-array of integers into ascending order.

    1. 如果要对对象进行排序,则会调用mergeSort方法。
    2. 但是当您查看整数类文件时,它会实现Comparable<Integer>Remember although it's subclass of Object):

      public final class Integer extends Number implements Comparable<Integer>
      

      所以在这里你不想使用Arrays.sort方法。通过使用compareTo(Integer anotherInteger)方法,可以对数组进行排序。