2530 Stimmen

Wie deklariere und initialisiere ich ein Array in Java?

Wie deklariere und initialisiere ich ein Array in Java?

13voto

hyper-neutrino Punkte 5001

Nehmen Sie den primitiven Typ int zum Beispiel. Es gibt mehrere Möglichkeiten, um zu deklarieren und int Array:

int[] i = new int[capacity];
int[] i = new int[] {value1, value2, value3, etc};
int[] i = {value1, value2, value3, etc};

wobei Sie in all diesen Fällen Folgendes verwenden können int i[] 代わりに int[] i .

Bei der Reflexion können Sie Folgendes verwenden (Type[]) Array.newInstance(Type.class, capacity);

Beachten Sie, dass in den Methodenparametern, ... zeigt an. variable arguments . Im Grunde genommen ist jede Anzahl von Parametern in Ordnung. Es ist einfacher, es mit Code zu erklären:

public static void varargs(int fixed1, String fixed2, int... varargs) {...}
...
varargs(0, "", 100); // fixed1 = 0, fixed2 = "", varargs = {100}
varargs(0, "", 100, 200); // fixed1 = 0, fixed2 = "", varargs = {100, 200};

Innerhalb der Methode, varargs wird wie eine normale int[] . Type... kann nur in Methodenparametern verwendet werden, also int... i = new int[] {} wird nicht kompiliert.

Beachten Sie, dass bei der Übergabe einer int[] zu einer Methode (oder einer anderen Type[] ), können Sie den dritten Weg nicht verwenden. In der Anweisung int[] i = *{a, b, c, d, etc}* geht der Compiler davon aus, dass die {...} bedeutet eine int[] . Aber das liegt daran, dass Sie eine Variable deklarieren. Wenn Sie ein Array an eine Methode übergeben, muss die Deklaration entweder new Type[capacity] o new Type[] {...} .

Mehrdimensionale Arrays

Mehrdimensionale Arrays sind viel schwieriger zu handhaben. Im Wesentlichen ist ein 2D-Array ein Array von Arrays. int[][] bedeutet eine Reihe von int[] s. Der Schlüssel ist, dass ein int[][] wird deklariert als int[x][y] ist der maximale Index i[x-1][y-1] . Im Wesentlichen ist ein rechteckiges int[3][5] ist:

[0, 0] [1, 0] [2, 0]
[0, 1] [1, 1] [2, 1]
[0, 2] [1, 2] [2, 2]
[0, 3] [1, 3] [2, 3]
[0, 4] [1, 4] [2, 4]

13voto

Chamly Idunil Punkte 1678

In Java 8 können Sie etwas wie dieses verwenden.

String[] strs = IntStream.range(0, 15)  // 15 is the size
    .mapToObj(i -> Integer.toString(i))
    .toArray(String[]::new);

12voto

Muhammad Suleman Punkte 2802

Wenn Sie mit Hilfe von Spiegelungen Arrays erstellen möchten, können Sie wie folgt vorgehen:

 int size = 3;
 int[] intArray = (int[]) Array.newInstance(int.class, size );

11voto

Khaled.K Punkte 5688

Array ist eine fortlaufende Liste von Elementen

int item = value;

int [] one_dimensional_array = { value, value, value, .., value };

int [][] two_dimensional_array =
{
  { value, value, value, .. value },
  { value, value, value, .. value },
    ..     ..     ..        ..
  { value, value, value, .. value }
};

Wenn es ein Objekt ist, dann ist es dasselbe Konzept

Object item = new Object();

Object [] one_dimensional_array = { new Object(), new Object(), .. new Object() };

Object [][] two_dimensional_array =
{
  { new Object(), new Object(), .. new Object() },
  { new Object(), new Object(), .. new Object() },
    ..            ..               ..
  { new Object(), new Object(), .. new Object() }
};

Im Falle von Objekten müssen Sie es entweder zuordnen null um sie zu initialisieren mit new Type(..) Klassen wie String y Integer sind Sonderfälle, die wie folgt behandelt werden

String [] a = { "hello", "world" };
// is equivalent to
String [] a = { new String({'h','e','l','l','o'}), new String({'w','o','r','l','d'}) };

Integer [] b = { 1234, 5678 };
// is equivalent to
Integer [] b = { new Integer(1234), new Integer(5678) };

Im Allgemeinen können Sie Arrays erstellen, die M dimensional

int [][]..[] array =
//  ^ M times [] brackets

    {{..{
//  ^ M times { bracket

//            this is array[0][0]..[0]
//                         ^ M times [0]

    }}..}
//  ^ M times } bracket
;

Es ist erwähnenswert, dass die Erstellung eines M dimensionalen Array ist platzraubend. Denn wenn Sie ein M dimensionales Array mit N in allen Dimensionen, Die Gesamtgröße des Arrays ist größer als N^M da jedes Feld eine Referenz hat und es in der M-Dimension ein (M-1)-dimensionales Feld von Referenzen gibt. Die Gesamtgröße ist wie folgt

Space = N^M + N^(M-1) + N^(M-2) + .. + N^0
//      ^                              ^ array reference
//      ^ actual data

11voto

2787184 Punkte 3511

Deklarieren eines Arrays von Objektreferenzen:

class Animal {}

class Horse extends Animal {
    public static void main(String[] args) {

        /*
         * Array of Animal can hold Animal and Horse (all subtypes of Animal allowed)
         */
        Animal[] a1 = new Animal[10];
        a1[0] = new Animal();
        a1[1] = new Horse();

        /*
         * Array of Animal can hold Animal and Horse and all subtype of Horse
         */
        Animal[] a2 = new Horse[10];
        a2[0] = new Animal();
        a2[1] = new Horse();

        /*
         * Array of Horse can hold only Horse and its subtype (if any) and not
           allowed supertype of Horse nor other subtype of Animal.
         */
        Horse[] h1 = new Horse[10];
        h1[0] = new Animal(); // Not allowed
        h1[1] = new Horse();

        /*
         * This can not be declared.
         */
        Horse[] h2 = new Animal[10]; // Not allowed
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X