Wie kann ich deklarieren und initialisieren Sie ein array in Java?
Frage
Wie kann ich deklarieren und initialisieren Sie ein array in Java?
Lösung
Sie entweder wörtliche Verwendung Array-Deklaration oder Array kann (aber nur, wenn Sie erklären, und die Variable beeinflussen direkt, Array-Literale können nicht für die Neuzuweisung eines Arrays verwendet werden).
Für primitive Typen:
int[] myIntArray = new int[3];
int[] myIntArray = {1, 2, 3};
int[] myIntArray = new int[]{1, 2, 3};
Für die Klassen, zum Beispiel String
, es ist das gleiche:
String[] myStringArray = new String[3];
String[] myStringArray = {"a", "b", "c"};
String[] myStringArray = new String[]{"a", "b", "c"};
Die dritte Möglichkeit der Initialisierung ist nützlich, wenn Sie das Array zuerst deklarieren und initialisieren Sie es dann. Die Besetzung ist hier notwendig.
String[] myStringArray;
myStringArray = new String[]{"a", "b", "c"};
Andere Tipps
Es gibt zwei Arten von Arrays.
Eindimensionale Arrays
Syntax für Standardwerte:
int[] num = new int[5];
Oder (weniger bevorzugt)
int num[] = new int[5];
Syntax mit angegebenen Werte (variable/Feld-Initialisierung):
int[] num = {1,2,3,4,5};
Oder (weniger bevorzugt)
int num[] = {1, 2, 3, 4, 5};
Hinweis:Für die Bequemlichkeit int[] num ist vorzuziehen, da es klar sagt, dass Sie reden hier über array.Sonst kein Unterschied.Überhaupt nicht.
Mehrdimensionales array
Erklärung
int[][] num = new int[5][2];
Oder
int num[][] = new int[5][2];
Oder
int[] num[] = new int[5][2];
Initialisierung
num[0][0]=1;
num[0][1]=2;
num[1][0]=1;
num[1][1]=2;
num[2][0]=1;
num[2][1]=2;
num[3][0]=1;
num[3][1]=2;
num[4][0]=1;
num[4][1]=2;
Oder
int[][] num={ {1,2}, {1,2}, {1,2}, {1,2}, {1,2} };
Ragged Array (oder ein Nicht-rechteckiges Array)
int[][] num = new int[5][];
num[0] = new int[1];
num[1] = new int[5];
num[2] = new int[2];
num[3] = new int[3];
Also, hier sind wir definieren die Spalten explizit.
Ein Anderer Weg:
int[][] num={ {1}, {1,2}, {1,2,3,4,5}, {1,2}, {1,2,3} };
Für Den Zugriff Auf:
for (int i=0; i<(num.length); i++ ) {
for (int j=0;j<num[i].length;j++)
System.out.println(num[i][j]);
}
Alternativ:
for (int[] a : num) {
for (int i : a) {
System.out.println(i);
}
}
Ragged arrays mehrdimensionale arrays.
Für die Erklärung finden Sie unter mehrdimensionale array-detail auf die offiziellen java-tutorials
Type[] variableName = new Type[capacity];
Type[] variableName = {comma-delimited values};
Type variableName[] = new Type[capacity];
Type variableName[] = {comma-delimited values};
ist auch gültig, aber ich ziehe die Klammern nach dem Typ, weil es einfacher ist zu sehen, dass der Typ der Variablen ist eigentlich ein Array.
Es gibt verschiedene Möglichkeiten, in denen Sie ein Array in Java deklarieren:
float floatArray[]; // Initialize later
int[] integerArray = new int[10];
String[] array = new String[] {"a", "b"};
Sie finden weitere Informationen in der Sun Tutorial Website und die JavaDoc .
Im Folgenden wird die Deklaration eines Arrays, aber das Array ist nicht initialisiert:
int[] myIntArray = new int[3];
Im Folgenden wird die Erklärung sowie die Initialisierung des Arrays:
int[] myIntArray = {1,2,3};
Nun wird die folgende zeigt auch die Erklärung sowie die Initialisierung des Arrays:
int[] myIntArray = new int[]{1,2,3};
Aber das dritter zeigt die Eigenschaft, anonymer Array-Objekterstellung, die durch eine Referenzgröße „myIntArray“ gerichtet ist, so dass, wenn wir schreiben nur „new int [] {1,2,3};“ dann ist dies, wie anonymes Array-Objekt erstellt werden kann.
Wenn wir nur schreiben:
int[] myIntArray;
Das ist nicht Erklärung Array, aber die folgende Aussage macht die obige Erklärung vollständig:
myIntArray=new int[3];
Ich finde es hilfreich, wenn Sie jeden Teil verstehen:
Type[] name = new Type[5];
Type[]
ist die type des Variable genannt Name ( "name" ist der Kennung genannt). Die wörtliche „Typ“ ist der Basistyp, und die Klammern bedeuten die Array-Typ dieser Basis ist. Array-Typen sind wiederum Arten von ihrer eigenen, die Sie mehrdimensionale Arrays wie Type[][]
(der Array-Typ vom Typ []) machen können. Das Schlüsselwort new
sagt Speicher für das neue Array zuzuordnen. Die Zahl zwischen dem Träger sagt, wie groß das neue Array sein wird und wie viel Speicher zuzuweisen. wenn Java weiß zum Beispiel, dass der Basistyp Type
32 Bytes nimmt, und Sie wollen eine Reihe von Größe 5, muss es intern 32 * 5 = 160 Byte zuzuweisen.
Sie können auch Arrays erstellen mit den Werten schon da, wie
int[] name = {1, 2, 3, 4, 5};
das schafft nicht nur den leeren Raum, sondern füllt sie mit diesen Werten. Java kann sagen, dass die Primitive ganze Zahlen sind, und dass es 5 von ihnen, so dass die Größe des Arrays kann implizit bestimmt werden.
Alternativ
// Either method works
String arrayName[] = new String[10];
String[] arrayName = new String[10];
, die ein Array deklariert arrayName
der Größe namens 10 (Sie haben die Elemente 0 bis 9 verwenden).
Auch im Fall, dass Sie etwas mehr Dynamik gibt es die Liste Schnittstelle. Dies wird nicht so gut, führt aber ist flexibler:
List<String> listOfString = new ArrayList<String>();
listOfString.add("foo");
listOfString.add("bar");
String value = listOfString.get(0);
assertEquals( value, "foo" );
Es gibt zwei Möglichkeiten, um ein Array zu machen:
Dieses, für ein leeres Array:
int[] array = new int[n]; // "n" being the number of spaces to allocate in the array
Und dieser, für eine initialisierte Array:
int[] array = {1,2,3,4 ...};
Sie können auch mehrdimensionale Arrays machen, wie folgt aus:
int[][] array2d = new int[x][y]; // "x" and "y" specify the dimensions
int[][] array2d = { {1,2,3 ...}, {4,5,6 ...} ...};
Nehmen Sie den primitiven Typ int
zum Beispiel. Es gibt mehrere Möglichkeiten zu erklären und int
Array:
int[] i = new int[capacity];
int[] i = new int[] {value1, value2, value3, etc};
int[] i = {value1, value2, value3, etc};
wo in all diesen Sie int i[]
statt int[] i
verwenden können.
Mit Reflexion können Sie (Type[]) Array.newInstance(Type.class, capacity);
verwenden
Beachten Sie, dass der Verfahrensparameter, ...
zeigt variable arguments
. Im Wesentlichen ist eine beliebige Anzahl von Parametern in Ordnung. Es ist einfacher, mit dem 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};
Im Innern des Verfahrens varargs
wird als normaler int[]
behandelt. Type...
kann nur in Methodenparameter verwendet werden, so int... i = new int[] {}
nicht kompiliert.
Beachten Sie, dass, wenn ein int[]
ein Verfahren (oder einem anderen Type[]
) vorbei, Sie nicht die dritte Art und Weise nutzen können. In der Erklärung int[] i = *{a, b, c, d, etc}*
, nimmt der Compiler, dass der {...}
ein int[]
bedeutet. Aber das ist, weil Sie eine Variable deklarieren. Wenn eine Anordnung auf ein Verfahren zum Übergeben, entweder die Erklärung new Type[capacity]
oder new Type[] {...}
sein muss.
Mehrdimensionale Arrays
Mehrdimensionale Arrays sind viel schwieriger zu behandeln. Im Wesentlichen wird ein 2D-Array ist ein Array von Arrays. int[][]
bedeutet eine Anordnung von int[]
s. Der Schlüssel ist, dass, wenn ein int[][]
als int[x][y]
deklariert wird, der maximale Index i[x-1][y-1]
ist. Im Wesentlichen ein rechteckiger 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]
Wenn Sie Arrays erstellen mit Reflexionen, dann können Sie wie folgt tun:
int size = 3;
int[] intArray = (int[]) Array.newInstance(int.class, size );
Deklarieren ein Array 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
}
}
In Java 9
Mit verschiedenen IntStream.iterate
und IntStream.takeWhile
Methoden:
int[] a = IntStream.iterate(10, x -> x <= 100, x -> x + 10).toArray();
Out: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
int[] b = IntStream.iterate(0, x -> x + 1).takeWhile(x -> x < 10).toArray();
Out: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In Java 10
die Verwendung von Lokale Variablentyp Inference :
var letters = new String[]{"A", "B", "C"};
Array ist eine sequentielle Liste der Elemente
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 das gleiche 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() }
};
Bei Objekten, müssen Sie entweder zuweisen null
sie mit new Type(..)
zu initialisieren, Klassen wie String
und Integer
sind Sonderfälle, die wie folgt behandelt werden wird
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) };
In der Regel können Sie Arrays erstellen, das ist 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 ein M
dimensionales Array zu schaffen, in Bezug auf Raum teuer ist. Da, wenn Sie ein M
dimensionales Array mit N
auf allen Dimensionen schaffen, wobei die Gesamtgröße des Arrays größer ist als N^M
, da jedes Array eine Referenz besitzt, und bei der M-Dimension gibt es einen (M-1) -dimensionalen Array von Referenzen. Die Gesamtgröße ist wie folgt
Space = N^M + N^(M-1) + N^(M-2) + .. + N^0
// ^ ^ array reference
// ^ actual data
Für Arrays der Klasse Objekte erstellen, können Sie die java.util.ArrayList
verwenden. ein Array zu definieren:
public ArrayList<ClassName> arrayName;
arrayName = new ArrayList<ClassName>();
Werte zuweisen Array:
arrayName.add(new ClassName(class parameters go here);
aus dem Array lesen:
ClassName variableName = arrayName.get(index);
Hinweis:
variableName
ist eine Referenz auf das Array was bedeutet, dass die Manipulation variableName
arrayName
manipulieren
für Schleifen:
//repeats for every value in the array
for (ClassName variableName : arrayName){
}
//Note that using this for loop prevents you from editing arrayName
for-Schleife, die Sie arrayName
(konventionelle for-Schleife) bearbeiten können:
for (int i = 0; i < arrayName.size(); i++){
//manipulate array here
}
In Java 8 können Sie wie folgt verwenden.
String[] strs = IntStream.range(0, 15) // 15 is the size
.mapToObj(i -> Integer.toString(i))
.toArray(String[]::new);
Deklarieren und initialisieren für Java 8 und höher. Erstellen Sie einen einfachen Integer-Array:
int [] a1 = IntStream.range(1, 20).toArray();
System.out.println(Arrays.toString(a1));
// Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Erstellen Sie eine zufällige Anordnung für ganze Zahlen zwischen [-50, 50] und für die Doppel [0, 1E17]:
int [] a2 = new Random().ints(15, -50, 50).toArray();
double [] a3 = new Random().doubles(5, 0, 1e17).toArray();
Power-of-two-Sequenz:
double [] a4 = LongStream.range(0, 7).mapToDouble(i -> Math.pow(2, i)).toArray();
System.out.println(Arrays.toString(a4));
// Output: [1.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0]
Für String [] Sie müssen einen Konstruktor angeben:
String [] a5 = Stream.generate(()->"I will not squeak chalk").limit(5).toArray(String[]::new);
System.out.println(Arrays.toString(a5));
Mehrdimensionale Arrays:
String [][] a6 = List.of(new String[]{"a", "b", "c"} , new String[]{"d", "e", "f", "g"})
.toArray(new String[0][]);
System.out.println(Arrays.deepToString(a6));
// Output: [[a, b, c], [d, e, f, g]]
Sie können es auch mit java.util.Arrays
:
List<String> number = Arrays.asList("1", "2", "3");
Out: ["1", "2", "3"]
Diese ist ziemlich einfach und unkompliziert. Ich habe es nicht in anderen Antworten sehen also dachte ich, es könnte hinzufügen.
Eine weitere Möglichkeit Arraylist zu deklarieren und initialisieren:
private List<String> list = new ArrayList<String>(){{
add("e1");
add("e2");
}};
Mit lokaler Variablen Typinferenz Sie nur angeben eingeben müssen einmal:
var values = new int[] { 1, 2, 3 };
oder
int[] values = { 1, 2, 3 }
Viele Antworten hier. Hinzufügen paar knifflige Weise Arrays zu erstellen (Aus einer Prüfung Standpunkt sein guten, dies zu wissen)
-
deklariert und ein Array definieren
int intArray[] = new int[3];
Das ist ein Array mit der Länge 3. erstellen Wie es int Urtyp alle Werte auf 0 gesetzt durch default.For Beispiel
hält intArray[2]; // will return 0
-
Box Klammern [] vor dem Variablennamen
int[] intArray = new int[3]; intArray[0] = 1; // array content now {1,0,0}
-
Initialisieren und Daten-Array liefern
int[] intArray = new int[]{1,2,3};
diesmal keine Notwendigkeit, die Größe in Kastenhalter zu erwähnen. Selbst einfache Variante dieser ist
int[] intArray = {1,2,3,4};
-
Ein Array der Länge 0
int[] intArray = new int[0]; int length = intArray.length; // will return length 0
Ähnliche für mehrdimensionale Arrays
int intArray[][] = new int[2][3]; // This will create an array of length 2 and //each element contains another array of length 3. // { {0,0,0},{0,0,0} } int lenght1 = intArray.length; // will return 2 int length2 = intArray[0].length; // will return 3
Mit Box Klammern vor Variable
int[][] intArray = new int[2][3];
seine absolut in Ordnung, wenn Sie am Ende eines Kastenhalter setzen
int[] intArray [] = new int[2][4]; int[] intArray[][] = new int[2][3][4]
Einige Beispiele
int [] intArray [] = new int[][] {{1,2,3},{4,5,6}};
int [] intArray1 [] = new int[][] {new int[] {1,2,3}, new int [] {4,5,6}};
int [] intArray2 [] = new int[][] {new int[] {1,2,3},{4,5,6}}
// All the 3 arrays assignments are valid
//Array looks like {{1,2,3},{4,5,6}}
Es ist nicht zwingend erforderlich, dass jedes innere Element der gleichen Größe ist.
int [][] intArray = new int[2][];
intArray[0] = {1,2,3};
intArray[1] = {4,5};
//array looks like {{1,2,3},{4,5}}
int[][] intArray = new int[][2] ; // this won't compile keep this in mind.
Sie müssen sicherstellen, wenn Sie über Syntax verwenden, Vorwärtsrichtung müssen Sie die Werte in Feld angeben brackets.Else es nicht kompiliert werden. Einige Beispiele:
int [][][] intArray = new int[1][][];
int [][][] intArray = new int[1][2][];
int [][][] intArray = new int[1][2][3];
Ein weiteres wichtiges Merkmal ist covariant
Number[] numArray = {1,2,3,4}; // java.lang.Number
numArray[0] = new Float(1.5f); // java.lang.Float
numArray[1] = new Integer(1); // java.lang.Integer
//You can store a subclass object in an array that is declared
// to be of the type of its superclass.
// Here Number is the superclass for both Float and Integer.
Number num[] = new Float[5]; // this is also valid
IMP. Bei referenzierten Typen Standardwert Array gespeichert ist null
Deklarieren Array: int[] arr;
Initialisiere Array: int[] arr = new int[10];
10 stellt die Anzahl der Elemente in dem Array erlaubt
Deklarieren mehrdimensionales Array: int[][] arr;
initialisieren Mehrdimensionale Array. int[][] arr = new int[10][17];
10 Zeilen und 17 Spalten und 170 Elemente, da 10 mal 17 170
Initialisieren eines Arrays bedeutet die Größe der es angibt.
int[] SingleDimensionalArray = new int[2]
int[][] MultiDimensionalArray = new int[3][4]