Bevor Sie eine neue Antwort veröffentlichen, sollten Sie berücksichtigen, dass diese Frage bereits über 25 Antworten enthält. Stellen Sie sicher, dass Ihre Antwort Informationen enthält, die nicht zu den vorhandenen Antworten gehören.
Janniks
Antworten:
2683
Sie können entweder die Array-Deklaration oder das Array-Literal verwenden (aber nur, wenn Sie die Variable sofort deklarieren und beeinflussen, können Array-Literale nicht zum erneuten Zuweisen eines Arrays verwendet werden).
Für primitive Typen:
int[] myIntArray =newint[3];int[] myIntArray ={1,2,3};int[] myIntArray =newint[]{1,2,3};// Since Java 8. Doc of IntStream: https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.htmlint[] myIntArray =IntStream.range(0,100).toArray();// From 0 to 99int[] myIntArray =IntStream.rangeClosed(0,100).toArray();// From 0 to 100int[] myIntArray =IntStream.of(12,25,36,85,28,96,47).toArray();// The order is preserved.int[] myIntArray =IntStream.of(12,25,36,85,28,96,47).sorted().toArray();// Sort
Was ist der Zweck, sowohl den zweiten als auch den dritten Weg zu haben, dies zu tun?
Quazi Irfan
123
@iamcreasy Es sieht so aus, als ob der zweite Weg mit return-Anweisungen nicht funktioniert. return {1,2,3}gibt einen Fehler aus, return new int[]{1,2,3}funktioniert aber einwandfrei (vorausgesetzt natürlich, dass Ihre Funktion ein ganzzahliges Array zurückgibt).
Skylar Ittner
1
@ SkylarMT Aber wir können immer noch den ersten Weg verwenden, um mit return-Anweisung zu verwenden.
Quazi Irfan
6
@iamcreasy Ich habe kürzlich eine Funktion geschrieben, die ein Array von Ints zurückgibt. Wenn innerhalb der Funktion ein Fehler aufgetreten ist, wollte ich, dass sie einen bestimmten Wert zurückgibt, aber die Funktion musste ein Array zurückgeben. Welcher Weg funktioniert für eine einzeilige Rückgabeerklärung? Nur der dritte.
Skylar Ittner
5
@apadana Im zweiten Fall erstellen Sie ein anonymes Objekt, das nur im umschließenden Bereich (Funktion oder was auch immer) definiert ist. Nach der Rückgabe an den Anrufer ist es nicht mehr gültig. Mit dem neuen Schlüsselwort weisen Sie das neue Objekt aus dem Heap zu und es ist außerhalb des definierenden Bereichs gültig.
Teukkam
280
Es gibt zwei Arten von Arrays.
Eindimensionales Array
Syntax für Standardwerte:
int[] num =newint[5];
Oder (weniger bevorzugt)
int num[]=newint[5];
Syntax mit angegebenen Werten (Variablen- / Feldinitialisierung):
int[] num ={1,2,3,4,5};
Oder (weniger bevorzugt)
int num[]={1,2,3,4,5};
Hinweis: Der Einfachheit halber ist int [] num vorzuziehen, da deutlich wird, dass es sich hier um ein Array handelt. Ansonsten kein Unterschied. Ganz und gar nicht.
Führt der erste nicht zu einem Null / Leer-Array anstelle eines Arrays mit Standardwerten?
Vipin8169
In diesem Punkt stimme ich zu, und wir können eine weitere Funktion hinzufügen, wir können die Größe dynamisch ändern.
AdamIJK
Ich könnte mit Ihnen darüber streiten, dass ein mehrdimensionales Array ein anderer "Typ" von Array ist. Es ist einfach ein Begriff, der verwendet wird, um ein Array zu beschreiben, das zufällig andere Arrays enthält. Sowohl die äußeren als auch die inneren Arrays (und die dazwischen liegenden, falls vorhanden) sind nur reguläre Arrays.
Beachten Sie, dass dies int[] a, b;nicht mit int a[], b;einem Fehler identisch ist , der leicht zu machen ist, wenn Sie das letztere Formular verwenden.
Jeroen Vannevel
39
Es gibt verschiedene Möglichkeiten, ein Array in Java zu deklarieren:
Ich finde es hilfreich, wenn Sie jeden Teil verstehen:
Type[] name =newType[5];
Type[]ist die Art der Variable namens Namen ( „name“ genannt wird Kennung ). Das Literal "Typ" ist der Basistyp, und die Klammern bedeuten, dass dies der Array-Typ dieser Basis ist. Array-Typen sind wiederum eigene Typen, mit denen Sie mehrdimensionale Arrays wie Type[][](den Array-Typ von Type []) erstellen können. Das Schlüsselwort newbesagt, dass Speicher für das neue Array zugewiesen werden soll. Die Zahl in der Klammer gibt an, wie groß das neue Array sein wird und wie viel Speicher zugewiesen werden soll. Wenn Java beispielsweise weiß, dass der Basistyp Type32 Byte benötigt und Sie ein Array der Größe 5 möchten, muss es intern 32 * 5 = 160 Byte zuweisen.
Sie können auch Arrays mit den bereits vorhandenen Werten erstellen, z
int[] name ={1,2,3,4,5};
Das schafft nicht nur den leeren Raum, sondern füllt ihn mit diesen Werten. Java kann erkennen, dass die Grundelemente Ganzzahlen sind und dass es 5 davon gibt, sodass die Größe des Arrays implizit bestimmt werden kann.
Es ist also nicht notwendig, aufzunehmen int[] name = new int[5]?
Cookie Monster
31
Das Folgende zeigt die Deklaration eines Arrays, aber das Array ist nicht initialisiert:
int[] myIntArray =newint[3];
Das Folgende zeigt die Deklaration sowie die Initialisierung des Arrays:
int[] myIntArray ={1,2,3};
Das Folgende zeigt nun auch die Deklaration sowie die Initialisierung des Arrays:
int[] myIntArray =newint[]{1,2,3};
Aber dieses dritte zeigt die Eigenschaft der anonymen Array-Objekterstellung, auf die eine Referenzvariable "myIntArray" zeigt. Wenn wir also nur "new int [] {1,2,3}" schreiben; dann kann auf diese Weise ein anonymes Array-Objekt erstellt werden.
Wenn wir nur schreiben:
int[] myIntArray;
Dies ist keine Deklaration des Arrays, aber die folgende Anweisung vervollständigt die obige Deklaration:
Es gibt absolut keinen Unterschied zwischen dem zweiten und dem dritten Ansatz, außer dass der zweite Ansatz nur funktioniert, wenn Sie auch eine Variable deklarieren. Es ist nicht klar, was Sie unter "Zeigt die Eigenschaft der anonymen Array-Objekterstellung" verstehen, aber es handelt sich tatsächlich um äquivalente Codeteile.
Jon Skeet
4
Auch der erste Schnipsel tut das Array initialisieren - es wird garantiert , um den Wert 0 für jedes Array - Element haben.
Jon Skeet
Gibt es wirklich keinen Unterschied zwischen dem zweiten und dem dritten Ansatz?
Truthadjustr
27
Alternative,
// Either method worksString arrayName[]=newString[10];String[] arrayName =newString[10];
Das deklariert ein Array mit arrayNameder Größe 10 (Sie müssen die Elemente 0 bis 9 verwenden).
Was ist der Standard, für den verwendet werden soll? Ersteres habe ich gerade erst entdeckt und finde es schrecklich irreführend: |
Anti Erde
2
Für das, was es wert ist, sagte mein Professor, dass der zweite Weg in Java typischer ist und dass er besser vermittelt, was los ist; als Array in Bezug auf den Typ, in den die Variable umgewandelt wurde.
Celeritas
2
Für eine Randnotiz: Eine Sprache mit mehr als einer Semantik, um eine Sache zu deklarieren, die schlechtes Sprachdesign bedeutet.
Muhammad Suleman
26
Für den Fall, dass Sie etwas Dynamischeres wünschen, gibt es die List-Oberfläche. Dies funktioniert nicht so gut, ist aber flexibler:
List<String> listOfString =newArrayList<String>();
listOfString.add("foo");
listOfString.add("bar");String value = listOfString.get(0);
assertEquals( value,"foo");
Wie heißt das "<>" in der von Ihnen erstellten Liste?
Zypern
@CyprUS Listist eine generische Klasse, in der ein Typ als Parameter eingeschlossen ist <>. Dies ist hilfreich, da Sie einen generischen Typ nur einmal definieren müssen und ihn dann mit mehreren verschiedenen Typen verwenden können. Eine ausführlichere Erklärung finden Sie unter docs.oracle.com/javase/tutorial/java/generics/types.html
Heimdall
15
Es gibt zwei Möglichkeiten, ein Array zu erstellen:
Dieser für ein leeres Array:
int[] array =newint[n];// "n" being the number of spaces to allocate in the array
Und dieses für ein initialisiertes Array:
int[] array ={1,2,3,4...};
Sie können auch mehrdimensionale Arrays wie folgt erstellen:
int[][] array2d =newint[x][y];// "x" and "y" specify the dimensionsint[][] array2d ={{1,2,3...},{4,5,6...}...};
Nehmen Sie intzum Beispiel den primitiven Typ . Es gibt verschiedene Möglichkeiten zum Deklarieren und intArrangieren:
int[] i =newint[capacity];int[] i =newint[]{value1, value2, value3, etc};int[] i ={value1, value2, value3, etc};
wo in all diesen können Sie int i[]anstelle von verwenden int[] i.
Mit Reflexion können Sie verwenden (Type[]) Array.newInstance(Type.class, capacity);
Beachten Sie, dass in Methodenparametern ...angibt variable arguments. Im Wesentlichen ist eine beliebige Anzahl von Parametern in Ordnung. Mit Code ist es einfacher zu erklären:
Innerhalb der Methode varargswird als normal behandelt int[]. Type...kann nur in Methodenparametern verwendet werden, int... i = new int[] {}wird also nicht kompiliert.
Beachten Sie, dass Sie beim Übergeben von int[]an eine Methode (oder eine andere Type[]) nicht den dritten Weg verwenden können. In der Anweisung int[] i = *{a, b, c, d, etc}*geht der Compiler davon aus, dass das {...}bedeutet an int[]. Das liegt aber daran, dass Sie eine Variable deklarieren. Wenn Sie ein Array an eine Methode übergeben, muss die Deklaration entweder new Type[capacity]oder sein new Type[] {...}.
Mehrdimensionale Arrays
Mehrdimensionale Arrays sind viel schwieriger zu handhaben. Im Wesentlichen ist ein 2D-Array ein Array von Arrays. int[][]bedeutet ein Array von int[]s. Der Schlüssel ist, dass wenn ein int[][]als deklariert ist int[x][y], der maximale Index ist i[x-1][y-1]. Ein Rechteck int[3][5]ist im Wesentlichen :
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]
Warum sollten Sie auf diese Weise ein Array erstellen?
Dorian Gray
9
Deklarieren eines Arrays von Objektreferenzen:
classAnimal{}classHorseextendsAnimal{publicstaticvoid main(String[] args){/*
* Array of Animal can hold Animal and Horse (all subtypes of Animal allowed)
*/Animal[] a1 =newAnimal[10];
a1[0]=newAnimal();
a1[1]=newHorse();/*
* Array of Animal can hold Animal and Horse and all subtype of Horse
*/Animal[] a2 =newHorse[10];
a2[0]=newAnimal();
a2[1]=newHorse();/*
* 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 =newHorse[10];
h1[0]=newAnimal();// Not allowed
h1[1]=newHorse();/*
* This can not be declared.
*/Horse[] h2 =newAnimal[10];// Not allowed}}
Bei Objekten müssen Sie sie entweder zuweisen null, um sie mit new Type(..)Klassen wie Stringund zu initialisieren. Dies Integersind Sonderfälle, die wie folgt behandelt werden
String[] a ={"hello","world"};// is equivalent toString[] a ={newString({'h','e','l','l','o'}),newString({'w','o','r','l','d'})};Integer[] b ={1234,5678};// is equivalent toInteger[] b ={newInteger(1234),newInteger(5678)};
Im Allgemeinen können Sie Arrays erstellen, die Mdimensional sind
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 das Erstellen eines Mdimensionalen Arrays räumlich teuer ist. Wenn Sie ein Mdimensionales Array mit Nallen Dimensionen erstellen , ist die Gesamtgröße des Arrays größer als N^M, da jedes Array eine Referenz hat und in der M-Dimension ein (M-1) -dimensionales Array von Referenzen vorhanden ist. Die Gesamtgröße ist wie folgt
Space= N^M + N^(M-1)+ N^(M-2)+..+ N^0// ^ ^ array reference// ^ actual data
Sind -50 und / oder +50 tatsächlich enthalten? Das heißt, ist das Innere an einem oder beiden Enden offen?
Peter Mortensen
1
-50 ist enthalten und +50 ist ausgeschlossen. Diese Informationen aus Java API "gegeben Herkunft (einschließlich) und gebunden (exklusiv)." Ich benutze die Intervalldeklaration aus dem Wiki . Also ich denke es wird korrekter sein [-50, 50)
Kirill Podlivaev
3
Eine andere Möglichkeit, ArrayList zu deklarieren und zu initialisieren:
privateList<String> list =newArrayList<String>(){{
add("e1");
add("e2");}};
Hier gibt es viele Antworten. Ich füge ein paar knifflige Möglichkeiten hinzu, um Arrays zu erstellen (aus Sicht der Prüfung ist es gut, dies zu wissen).
Deklarieren und definieren Sie ein Array
int intArray[]=newint[3];
Dadurch wird ein Array der Länge 3 erstellt. Da es den primitiven Typ int enthält, werden alle Werte standardmäßig auf 0 gesetzt. Zum Beispiel,
intArray[2];// Will return 0
Verwenden von Klammern [] vor dem Variablennamen
int[] intArray =newint[3];
intArray[0]=1;// Array content is now {1, 0, 0}
Initialisieren Sie das Array und stellen Sie Daten bereit
int[] intArray =newint[]{1,2,3};
Diesmal muss die Größe in der Boxhalterung nicht erwähnt werden. Auch eine einfache Variante davon ist:
int[] intArray ={1,2,3,4};
Ein Array der Länge 0
int[] intArray =newint[0];int length = intArray.length;// Will return length 0
Ähnliches gilt für mehrdimensionale Arrays
int intArray[][]=newint[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 2int length2 = intArray[0].length;// Will return 3
Verwenden von Klammern vor der Variablen:
int[][] intArray =newint[2][3];
Es ist absolut in Ordnung, wenn Sie am Ende eine Boxhalterung anbringen:
int[] intArray []=newint[][]{{1,2,3},{4,5,6}};int[] intArray1 []=newint[][]{newint[]{1,2,3},newint[]{4,5,6}};int[] intArray2 []=newint[][]{newint[]{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 dieselbe Größe hat.
int[][] intArray =newint[2][];
intArray[0]={1,2,3};
intArray[1]={4,5};//array looks like {{1,2,3},{4,5}}int[][] intArray =newint[][2];// This won't compile. Keep this in mind.
Wenn Sie die obige Syntax verwenden, müssen Sie sicherstellen, dass Sie in Vorwärtsrichtung die Werte in Klammern angeben müssen. Sonst wird es nicht kompiliert. Einige Beispiele:
Number[] numArray ={1,2,3,4};// java.lang.Number
numArray[0]=newFloat(1.5f);// java.lang.Float
numArray[1]=newInteger(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[]=newFloat[5];// This is also valid
WICHTIG: Für referenzierte Typen ist der im Array gespeicherte Standardwert null.
Statisches Array: Array mit fester Größe (seine Größe sollte beim Start deklariert werden und kann später nicht mehr geändert werden)
Dynamisches Array: Hierfür wird keine Größenbeschränkung berücksichtigt. (Reine dynamische Arrays gibt es in Java nicht. Stattdessen wird List am meisten empfohlen.)
Verwenden Sie die folgenden Deklarations- und Initialisierungsanweisungen, um ein statisches Array aus Integer, String, Float usw. zu deklarieren.
int[] intArray =newint[10];String[] intArray =newint[10];float[] intArray =newint[10];// here you have 10 index starting from 0 to 9
Um dynamische Funktionen verwenden zu können, müssen Sie List ... List verwenden. List ist ein reines dynamisches Array, und es ist nicht erforderlich, die Größe zu Beginn zu deklarieren. Unten ist der richtige Weg, um eine Liste in JAVA> zu deklarieren
Es ist sehr einfach, ein Array zu deklarieren und zu initialisieren. Sie möchten beispielsweise fünf ganzzahlige Elemente, 1, 2, 3, 4 und 5, in einem Array speichern. Sie können dies folgendermaßen tun:
ein)
int[] a =newint[5];
oder
b)
int[] a ={1,2,3,4,5};
Das Grundmuster für die Initialisierung und Deklaration nach Methode a) lautet also:
Das Array kann abhängig von der Definition des Arrays primitive Datentypen sowie Objekte einer Klasse enthalten. Bei primitiven Datentypen werden die tatsächlichen Werte an zusammenhängenden Speicherstellen gespeichert. Bei Objekten einer Klasse werden die tatsächlichen Objekte im Heap-Segment gespeichert.
Eindimensionale Arrays:
Die allgemeine Form einer eindimensionalen Array-Deklaration lautet
type var-name[];
OR
type[] var-name;
Instanziieren eines Arrays in Java
var-name =new type [size];
Zum Beispiel
int intArray[];//declaring array
intArray =newint[20];// allocating memory to array// the below line is equals to line1 + line2int[] intArray =newint[20];// combining both statements in oneint[] intArray =newint[]{1,2,3,4,5,6,7,8,9,10};// accessing the elements of the specified arrayfor(int i =0; i < intArray.length; i++)System.out.println("Element at index "+ i +" : "+ intArray[i]);
Während dieser Code die Frage beantworten kann, ist es besser zu erklären, wie er das Problem löst, ohne andere vorzustellen, und warum er verwendet wird. Nur-Code-Antworten sind auf lange Sicht nicht sinnvoll.
Antworten:
Sie können entweder die Array-Deklaration oder das Array-Literal verwenden (aber nur, wenn Sie die Variable sofort deklarieren und beeinflussen, können Array-Literale nicht zum erneuten Zuweisen eines Arrays verwendet werden).
Für primitive Typen:
Für Klassen ist es zum Beispiel
String
dasselbe:Die dritte Art der Initialisierung ist nützlich, wenn Sie das Array zuerst deklarieren und dann initialisieren. Die Besetzung ist hier notwendig.
quelle
return {1,2,3}
gibt einen Fehler aus,return new int[]{1,2,3}
funktioniert aber einwandfrei (vorausgesetzt natürlich, dass Ihre Funktion ein ganzzahliges Array zurückgibt).Es gibt zwei Arten von Arrays.
Eindimensionales Array
Syntax für Standardwerte:
Oder (weniger bevorzugt)
Syntax mit angegebenen Werten (Variablen- / Feldinitialisierung):
Oder (weniger bevorzugt)
Hinweis: Der Einfachheit halber ist int [] num vorzuziehen, da deutlich wird, dass es sich hier um ein Array handelt. Ansonsten kein Unterschied. Ganz und gar nicht.
Mehrdimensionales Array
Erklärung
Oder
Oder
Initialisierung
Oder
Ragged Array (oder nicht rechteckiges Array)
Hier definieren wir Spalten explizit.
Ein anderer Weg:
Für den Zugriff:
Alternative:
Ragged Arrays sind mehrdimensionale Arrays.
Erläuterungen finden Sie in den offiziellen Java-Tutorials unter Details zu mehrdimensionalen Arrays
quelle
ist auch gültig, aber ich bevorzuge die Klammern nach dem Typ, da es einfacher ist zu erkennen, dass der Typ der Variablen tatsächlich ein Array ist.
quelle
int[] a, b;
nicht mitint a[], b;
einem Fehler identisch ist , der leicht zu machen ist, wenn Sie das letztere Formular verwenden.Es gibt verschiedene Möglichkeiten, ein Array in Java zu deklarieren:
Weitere Informationen finden Sie auf der Sun-Tutorial- Site und im JavaDoc .
quelle
Ich finde es hilfreich, wenn Sie jeden Teil verstehen:
Type[]
ist die Art der Variable namens Namen ( „name“ genannt wird Kennung ). Das Literal "Typ" ist der Basistyp, und die Klammern bedeuten, dass dies der Array-Typ dieser Basis ist. Array-Typen sind wiederum eigene Typen, mit denen Sie mehrdimensionale Arrays wieType[][]
(den Array-Typ von Type []) erstellen können. Das Schlüsselwortnew
besagt, dass Speicher für das neue Array zugewiesen werden soll. Die Zahl in der Klammer gibt an, wie groß das neue Array sein wird und wie viel Speicher zugewiesen werden soll. Wenn Java beispielsweise weiß, dass der BasistypType
32 Byte benötigt und Sie ein Array der Größe 5 möchten, muss es intern 32 * 5 = 160 Byte zuweisen.Sie können auch Arrays mit den bereits vorhandenen Werten erstellen, z
Das schafft nicht nur den leeren Raum, sondern füllt ihn mit diesen Werten. Java kann erkennen, dass die Grundelemente Ganzzahlen sind und dass es 5 davon gibt, sodass die Größe des Arrays implizit bestimmt werden kann.
quelle
int[] name = new int[5]
?Das Folgende zeigt die Deklaration eines Arrays, aber das Array ist nicht initialisiert:
Das Folgende zeigt die Deklaration sowie die Initialisierung des Arrays:
Das Folgende zeigt nun auch die Deklaration sowie die Initialisierung des Arrays:
Aber dieses dritte zeigt die Eigenschaft der anonymen Array-Objekterstellung, auf die eine Referenzvariable "myIntArray" zeigt. Wenn wir also nur "new int [] {1,2,3}" schreiben; dann kann auf diese Weise ein anonymes Array-Objekt erstellt werden.
Wenn wir nur schreiben:
Dies ist keine Deklaration des Arrays, aber die folgende Anweisung vervollständigt die obige Deklaration:
quelle
Alternative,
Das deklariert ein Array mit
arrayName
der Größe 10 (Sie müssen die Elemente 0 bis 9 verwenden).quelle
Für den Fall, dass Sie etwas Dynamischeres wünschen, gibt es die List-Oberfläche. Dies funktioniert nicht so gut, ist aber flexibler:
quelle
List
ist eine generische Klasse, in der ein Typ als Parameter eingeschlossen ist<>
. Dies ist hilfreich, da Sie einen generischen Typ nur einmal definieren müssen und ihn dann mit mehreren verschiedenen Typen verwenden können. Eine ausführlichere Erklärung finden Sie unter docs.oracle.com/javase/tutorial/java/generics/types.htmlEs gibt zwei Möglichkeiten, ein Array zu erstellen:
Dieser für ein leeres Array:
Und dieses für ein initialisiertes Array:
Sie können auch mehrdimensionale Arrays wie folgt erstellen:
quelle
Nehmen Sie
int
zum Beispiel den primitiven Typ . Es gibt verschiedene Möglichkeiten zum Deklarieren undint
Arrangieren:wo in all diesen können Sie
int i[]
anstelle von verwendenint[] i
.Mit Reflexion können Sie verwenden
(Type[]) Array.newInstance(Type.class, capacity);
Beachten Sie, dass in Methodenparametern
...
angibtvariable arguments
. Im Wesentlichen ist eine beliebige Anzahl von Parametern in Ordnung. Mit Code ist es einfacher zu erklären:Innerhalb der Methode
varargs
wird als normal behandeltint[]
.Type...
kann nur in Methodenparametern verwendet werden,int... i = new int[] {}
wird also nicht kompiliert.Beachten Sie, dass Sie beim Übergeben von
int[]
an eine Methode (oder eine andereType[]
) nicht den dritten Weg verwenden können. In der Anweisungint[] i = *{a, b, c, d, etc}*
geht der Compiler davon aus, dass das{...}
bedeutet anint[]
. Das liegt aber daran, dass Sie eine Variable deklarieren. Wenn Sie ein Array an eine Methode übergeben, muss die Deklaration entwedernew Type[capacity]
oder seinnew Type[] {...}
.Mehrdimensionale Arrays
Mehrdimensionale Arrays sind viel schwieriger zu handhaben. Im Wesentlichen ist ein 2D-Array ein Array von Arrays.
int[][]
bedeutet ein Array vonint[]
s. Der Schlüssel ist, dass wenn einint[][]
als deklariert istint[x][y]
, der maximale Index isti[x-1][y-1]
. Ein Rechteckint[3][5]
ist im Wesentlichen :quelle
In Java 9
Mit verschiedenen
IntStream.iterate
undIntStream.takeWhile
Methoden:In Java 10
Verwenden der Inferenz des lokalen Variablentyps :
quelle
Wenn Sie Arrays mit Reflexionen erstellen möchten, können Sie Folgendes tun:
quelle
Deklarieren eines Arrays von Objektreferenzen:
quelle
Array ist eine sequentielle Liste von Elementen
Wenn es ein Objekt ist, dann ist es das gleiche Konzept
Bei Objekten müssen Sie sie entweder zuweisen
null
, um sie mitnew Type(..)
Klassen wieString
und zu initialisieren. DiesInteger
sind Sonderfälle, die wie folgt behandelt werdenIm Allgemeinen können Sie Arrays erstellen, die
M
dimensional sindEs ist erwähnenswert, dass das Erstellen eines
M
dimensionalen Arrays räumlich teuer ist. Wenn Sie einM
dimensionales Array mitN
allen Dimensionen erstellen , ist die Gesamtgröße des Arrays größer alsN^M
, da jedes Array eine Referenz hat und in der M-Dimension ein (M-1) -dimensionales Array von Referenzen vorhanden ist. Die Gesamtgröße ist wie folgtquelle
In Java 8 können Sie dies verwenden.
quelle
Zum Erstellen von Arrays von Klassenobjekten können Sie die verwenden
java.util.ArrayList
. So definieren Sie ein Array:Weisen Sie dem Array Werte zu:
Lesen Sie aus dem Array:
Hinweis:
variableName
ist ein Verweis auf das Array, was bedeutet, dass durch ManipulierenvariableName
manipuliert wirdarrayName
für Schleifen:
for-Schleife, mit der Sie bearbeiten können
arrayName
(herkömmliche for-Schleife):quelle
Deklarieren und initialisieren Sie für Java 8 und höher. Erstellen Sie ein einfaches Integer-Array:
Erstellen Sie ein zufälliges Array für ganze Zahlen zwischen [-50, 50] und für doppelte [0, 1E17]:
Zweierpotenz-Sequenz:
Für String [] müssen Sie einen Konstruktor angeben:
Mehrdimensionale Arrays:
quelle
Eine andere Möglichkeit, ArrayList zu deklarieren und zu initialisieren:
quelle
Hier gibt es viele Antworten. Ich füge ein paar knifflige Möglichkeiten hinzu, um Arrays zu erstellen (aus Sicht der Prüfung ist es gut, dies zu wissen).
Deklarieren und definieren Sie ein Array
Dadurch wird ein Array der Länge 3 erstellt. Da es den primitiven Typ int enthält, werden alle Werte standardmäßig auf 0 gesetzt. Zum Beispiel,
Verwenden von Klammern [] vor dem Variablennamen
Initialisieren Sie das Array und stellen Sie Daten bereit
Diesmal muss die Größe in der Boxhalterung nicht erwähnt werden. Auch eine einfache Variante davon ist:
Ein Array der Länge 0
Ähnliches gilt für mehrdimensionale Arrays
Verwenden von Klammern vor der Variablen:
Es ist absolut in Ordnung, wenn Sie am Ende eine Boxhalterung anbringen:
Einige Beispiele
Es ist nicht zwingend erforderlich, dass jedes innere Element dieselbe Größe hat.
Wenn Sie die obige Syntax verwenden, müssen Sie sicherstellen, dass Sie in Vorwärtsrichtung die Werte in Klammern angeben müssen. Sonst wird es nicht kompiliert. Einige Beispiele:
Ein weiteres wichtiges Merkmal ist die Kovariante
WICHTIG: Für referenzierte Typen ist der im Array gespeicherte Standardwert null.
quelle
Sie können es auch tun mit
java.util.Arrays
:Dieser ist ziemlich einfach und unkompliziert.
quelle
Bei der Inferenz lokaler Variablentypen müssen Sie den Typ nur einmal angeben:
Oder
quelle
var
.var
openjdk.java.net/jeps/286Array hat zwei Grundtypen.
Verwenden Sie die folgenden Deklarations- und Initialisierungsanweisungen, um ein statisches Array aus Integer, String, Float usw. zu deklarieren.
Um dynamische Funktionen verwenden zu können, müssen Sie List ... List verwenden. List ist ein reines dynamisches Array, und es ist nicht erforderlich, die Größe zu Beginn zu deklarieren. Unten ist der richtige Weg, um eine Liste in JAVA> zu deklarieren
quelle
Array deklarieren:
int[] arr;
Array initialisieren:
int[] arr = new int[10];
10 steht für die Anzahl der im Array zulässigen ElementeMehrdimensionales Array deklarieren:
int[][] arr;
Mehrdimensionales Array initialisieren:
int[][] arr = new int[10][17];
10 Zeilen und 17 Spalten und 170 Elemente, da 10 mal 17 170 ist.Das Initialisieren eines Arrays bedeutet, die Größe des Arrays anzugeben.
quelle
Es ist sehr einfach, ein Array zu deklarieren und zu initialisieren. Sie möchten beispielsweise fünf ganzzahlige Elemente, 1, 2, 3, 4 und 5, in einem Array speichern. Sie können dies folgendermaßen tun:
ein)
oder
b)
Das Grundmuster für die Initialisierung und Deklaration nach Methode a) lautet also:
datatype
sollte in Kleinbuchstaben sein.Das Grundmuster für die Initialisierung und Deklaration nach Methode a lautet also:
Wenn es sich um ein String-Array handelt:
Wenn es sich um ein Zeichenarray handelt:
Bei float double entspricht das Format des Arrays der Ganzzahl.
Zum Beispiel:
Wenn Sie das Array jedoch mit "Methode a" deklarieren und initialisieren, müssen Sie die Werte manuell oder per Schleife oder Ähnlichem eingeben.
Wenn Sie dies jedoch mit "Methode b" tun, müssen Sie die Werte nicht manuell eingeben.
quelle
Das Array kann abhängig von der Definition des Arrays primitive Datentypen sowie Objekte einer Klasse enthalten. Bei primitiven Datentypen werden die tatsächlichen Werte an zusammenhängenden Speicherstellen gespeichert. Bei Objekten einer Klasse werden die tatsächlichen Objekte im Heap-Segment gespeichert.
Eindimensionale Arrays:
Die allgemeine Form einer eindimensionalen Array-Deklaration lautet
Instanziieren eines Arrays in Java
Zum Beispiel
Ref: https://www.geeksforgeeks.org/arrays-in-java/
quelle
einander volles Beispiel mit Filmen Klasse 😋
quelle
Beispiel:
oder
Beispiel:
quelle
quelle