Wie deklariere und initialisiere ich ein Array in Java?
Antworten
Zu viele Anzeigen?Deklarieren und Initialisieren für Java 8 und höher. Erstellen Sie ein einfaches 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 ein Zufallsfeld für ganze Zahlen zwischen [-50, 50] und für Paschas [0, 1E17]:
int [] a2 = new Random().ints(15, -50, 50).toArray();
double [] a3 = new Random().doubles(5, 0, 1e17).toArray();
Zweierpotenzierte 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[] müssen Sie 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]]
Um Arrays der Klasse Objects zu erstellen, können Sie die java.util.ArrayList
. um ein Array zu definieren:
public ArrayList<ClassName> arrayName;
arrayName = new ArrayList<ClassName>();
Weisen Sie dem Array Werte zu:
arrayName.add(new ClassName(class parameters go here);
Aus dem Array lesen:
ClassName variableName = arrayName.get(index);
Anmerkung:
variableName
ist ein Verweis auf das Array, was bedeutet, dass die Manipulation variableName
wird manipulieren arrayName
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 es Ihnen ermöglicht, die arrayName
(herkömmliche for-Schleife):
for (int i = 0; i < arrayName.size(); i++){
//manipulate array here
}
Ein Array hat zwei Grundtypen.
Statisches Array: Array mit fester Größe (seine Größe sollte zu Beginn angegeben werden und kann später nicht mehr geändert werden)
Dynamisches Array: Eine Größenbeschränkung ist dabei nicht vorgesehen. (Reine dynamische Arrays gibt es in Java nicht, stattdessen wird List bevorzugt).
Um ein statisches Array von Integer, String, Float, etc. zu deklarieren, verwenden Sie die folgenden Deklarations- und Initialisierungsanweisungen.
int[] intArray = new int[10];
String[] intArray = new int[10];
float[] intArray = new int[10];
// Here you have 10 index starting from 0 to 9
Um dynamische Funktionen zu nutzen, müssen Sie List verwenden... Liste ist rein dynamisches Array und es ist nicht notwendig, die Größe zu Beginn anzugeben. Im Folgenden finden Sie die korrekte Art und Weise, eine Liste in Java zu deklarieren -
ArrayList<String> myArray = new ArrayList<String>();
myArray.add("Value 1: something");
myArray.add("Value 2: something more");
Hier gibt es eine Menge Antworten. Ich füge ein paar knifflige Möglichkeiten hinzu, um Arrays zu erstellen (aus einer Prüfung Standpunkt ist es gut, dies zu wissen)
-
Deklarieren und Definieren eines Arrays
int intArray[] = new int[3];
Dadurch wird ein Array der Länge 3 erstellt. Da es einen primitiven Typ, nämlich int, enthält, werden alle Werte standardmäßig auf 0 gesetzt. Zum Beispiel,
intArray[2]; // Will return 0
-
Verwendung von eckigen Klammern [] vor dem Variablennamen
int[] intArray = new int[3]; intArray[0] = 1; // Array content is now {1, 0, 0}
-
Initialisierung und Bereitstellung von Daten für das Array
int[] intArray = new int[]{1, 2, 3};
Diesmal ist es nicht notwendig, die Größe in der Klammer anzugeben. Auch eine einfache Variante davon 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
Ähnlich bei mehrdimensionalen 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
Verwendung von eckigen Klammern vor der Variablen:
int[][] intArray = new int[2][3];
Es ist völlig in Ordnung, wenn Sie am Ende eine Kastenklammer anbringen:
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 die gleiche Größe hat.
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.
Wenn Sie die obige Syntax verwenden, müssen Sie darauf achten, dass Sie die Werte für die Vorwärtsrichtung in eckigen Klammern angeben. Andernfalls wird es nicht kompiliert. 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 Kovariante
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
WICHTIG: Bei referenzierten Typen ist der im Array gespeicherte Standardwert null.