📜  Java中的util.Arrays与Reflection.Array的示例

📅  最后修改于: 2020-03-28 03:32:09             🧑  作者: Mango

先决条件: ArrayArrays class
java.lang.reflect包中的Array类是Java Reflection的一部分。此类提供了静态方法来动态创建和访问Java数组。这是final类,意味着它不能被实例化或更改。类名本身只能使用此类的方法。
java.util包中的Arrays类是Java Collection Framework的一部分。此类提供了静态方法来动态创建和访问Java数组。它仅由静态方法和Object类的方法组成。此类的方法可由类名称本身使用。
数组与Java中的数组之间的区别:

  1. 存在的包:
    Array类存在于java.lang.reflect包中,而Arrays类存在于java.util包中
    Array的类层次结构:
    java.lang.Object
     ↳ java.lang.reflect
      ↳ Class Array

    Arrays的类层次结构:

    java.lang.Object
     ↳ Java.util
      ↳ Class Arrays
  2. 不变性:
    Array类本质上是不可变的,而Arrays类则不是。不可变表示该类不能扩展或继承。将Array类声明为final以实现不变性。Array的类声明:
    public final class Array
        extends Object

    Arrays的声明:

    public class Arrays
        extends Object

     

  3. 使用方法:
    java.util.Arrays包含用来操作的各种方法(例如排序和搜索),而此java.lang.reflect.Array中类提供静态方法来动态创建和访问Java arrays,该Array类使数组保持类型安全。例:
    // Java展示Array vs Arrays
    import java.lang.reflect.Array;
    import java.util.Arrays;
    public class GfG {
        public static void main(String[] args)
        {
            
            int[] intArray = new int[5];
            // 给array增添元素
            // using reflect.Array class
            Array.setInt(intArray, 0, 10);
            // 打印Array
            // 使用util.Arrays类
            System.out.println(
                Arrays.toString(intArray));
        }
    }

    输出:

    [10,0,0,0,0]