在java中声明一个没有大小的数组

Chr*_*ael 4 java arrays

你好我试图在java中声明一个数组,但我不希望数组具有特定的大小,因为每次大小必须不同.

我使用了这个声明:int [] myarray5;

但是当我尝试下面的代码时,myarray5上有一个错误

for(int i=0; i<=myarray1.length - 1; i++){
        for (int j=0; j<=myarray2.length - 1; j++){
            if (myarray1[i] == myarray2[j]){
                myarray5[k] = myarray2[j];
                k++;
            }

        }

    }
Run Code Online (Sandbox Code Playgroud)

以及何时打印阵列:

for (int i=0; i<=myarray3.length-1; i++){
        System.out.print(myarray3[i]+",");
        }
Run Code Online (Sandbox Code Playgroud)

Den*_*ich 15

有一个NullPointerException因为你声明但从未初始化数组.

您可以动态声明一个数组,如下所示.

  int size = 5; // or anyother value you want
  int[] array = new int[size];
Run Code Online (Sandbox Code Playgroud)

或者你使用一个列表.这允许动态改变大小.例如:

  List<Integer> list = new ArrayList<>();
  list.add(5); //adds number 5 to the list
  int number = list.get(0); // Returns Element which is located at position 0 (so in this example in number will be "5");
Run Code Online (Sandbox Code Playgroud)

  • 备注:[从不使用原始类型](http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use-it)(例如“ ArrayList”,带有缺少通用类型)。我在您的代码的构造函数调用中添加了泛型类型。 (2认同)

use*_*460 6

我不希望数组具有特定大小,因为每次大小都必须不同。

Java 中的数组具有固定大小。一旦声明,你不能改变它。如果你试图强迫你的方式。您每次都在创建一个新数组。请不要array1arrayN任何理由创建。

如果您想要动态大小,可以拉伸和收缩。您正在寻找ArrayList. Java 中的 ArrayList 很容易使用。

ArrayList<Type> arrayList = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

或者

List<Type> arrayList = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

但是当我尝试下面的代码时,myarray5 出现错误

我想那是ArrayIndexOutOfBoundsException因为你的循环基于 array1 的长度,但你的其他数组array5有不同的长度。