Betrachten Sie die folgenden Fragen, bevor Sie diesen Artikel starten
Wie bekomme ich die Länge eines Arrays, ohne eine IDE mit automatischer Funktion zu verwenden? Und wie bekomme ich die Länge einer Saite?
Ich habe Programmierer verschiedener Ebenen, einschließlich Junior- und Zwischenstufen, gefragt. Keiner von ihnen kann diese Frage genau und sicher beantworten (wenn Sie diese Frage genau und sicher beantworten können, beweist sie, dass Sie in diesem Wissen besser sind als die meisten Intermediate -Programmierer). Da viele IDEs jetzt Code -Abschlussfunktionen haben, können Entwickler viele Probleme sehr oberflächlich verstehen.
Die richtige Antwort auf die obige Frage sollte wie folgt lautet:
int [] arr = new int [3];
Die Frage ist also, warum das Array ein Längenattribut hat, aber die Zeichenfolge nicht. Oder warum haben Zeichenfolgen length() -Methode, aber Arrays nicht?
Warum hat Array ein Längenattribut?
Erstens ist ein Array ein Containerobjekt, das eine feste Anzahl von Werten desselben Typs enthält. Sobald das Array erstellt wurde, ist seine Länge festgelegt. Die Länge des Arrays kann als Länge der endgültigen Instanzvariablen verwendet werden. Daher kann die Länge als Attribut eines Arrays betrachtet werden.
Es gibt zwei Möglichkeiten, ein Array zu erstellen:
1. Erstellen Sie ein Array durch Array -Ausdrücke.
2. Erstellen Sie ein Array, indem Sie die Werte initialisieren.
In beiden Fällen ist seine Größe festgelegt, sobald das Array erstellt wurde.
Die Methode zum Erstellen eines Arrays unter Verwendung eines Ausdrucks ist wie folgt, wodurch der Elementtyp, die Dimension des Arrays und die Länge des Arrays von mindestens einer Dimension angibt.
Diese Deklarationsmethode erfüllt die Anforderungen, da sie die Länge einer Dimension angibt (das Array hat Typ int, die Dimension beträgt 2 und die erste Dimension 3)
int [] [] arr = new int [3] [];
Beim Erstellen eines Arrays mit Array -Initialisierung müssen Sie alle Anfangswerte bereitstellen. Das Formular soll {und} verwenden, um alle Anfangswerte zusammenzuführen und zu trennen.
int [] arr = {1,2,3};Notiz:
Hier kann es eine Frage geben. Da die Arraygröße bei der Initialisierung angegeben ist, int[][] arr = new int[3][];定das Array, ohne die Größe der zweiten Dimension des Arrays zu geben. Wie ist die Länge dieses Arrents "definiert"?
Tatsächlich beträgt die Länge von ARR 3.. Tatsächlich sind alle Arrays in Java, egal wie viele Dimensionen, tatsächlich eindimensionale Arrays sind. Beispielsweise werden arr, 3 Leerzeichen zugewiesen, jeder Raum speichert die Adresse eines eindimensionalen Arrays, das zu einem "zweidimensionalen" Array wird. Aber für arr beträgt seine Länge 3.
int [] [] a = new int [3] [];
Warum gibt es keine Array -Klasse wie String, die in Java definiert ist
Da Arrays auch Objekte sind, ist auch der folgende Code legal:
Objekt obj = new int [10];
Das Array enthält alle Methoden, die aus dem Objekt (Erbschaftsbeziehung von Arrays in Java) geerbt wurden, mit Ausnahme von Clone (). Warum gibt es keine Array -Klasse? Es gibt keine Array.java -Datei in Java. Eine einfache Erklärung ist, dass es versteckt ist (Hinweis: Arrays in Java ähneln den grundlegenden Datentypen, sie sind ein integrierter Typ und es gibt keine tatsächliche Klasse, die ihm entspricht). Sie können über diese Frage nachdenken - wenn es eine Array -Klasse gibt, wie würde sie dann aussehen? Es braucht noch ein Array, um alle Array -Elemente zu speichern, oder? Daher ist es keine gute Idee, eine Array -Klasse zu definieren. (Anmerkung des Übersetzers: Hier kann ein bisschen verwirrend sein, der Grund ist ein bisschen ähnlich: Das Problem, dass Hühner mit Eiern und Hühnern geboren werden, und die Metapher ist möglicherweise nicht sehr angemessen. Bitte verstehen Sie es selbst)
Tatsächlich können wir die Klassendefinition des Arrays über den folgenden Code erhalten:
int [] arr = new int [3]; System.out.println (arr.getClass ());
Ausgabe:
Klasse [i
"Klasse [i" repräsentiert die Signatur des Laufzeittyps des Klassenobjekts, dessen Mitgliedstyp ein Array von int ist. "
Warum hat String eine Länge () -Methode?
Die Datenstruktur hinter String ist ein Zeichen -Array, daher müssen keine unnötige Eigenschaft definiert werden (da die Eigenschaft bereits im Zeichenwert angegeben ist). Im Gegensatz zu C ist das Charray of Char in Java nicht gleich einer String, obwohl der interne Mechanismus der Zeichenfolge von Char -Arrays implementiert wird. (Hinweis: In der C -Sprache gibt es keine String -Klasse, und das Definieren von Zeichenfolgen verwendet normalerweise die Form von char string[6] = "hollis"; )
Hinweis: Es gibt folgende Möglichkeiten, um char [] in eine Zeichenfolge umzuwandeln:
char [] s = {'a', 'b', 'c'}; string string1 = s.toString (); String 2 = new String (s); String String3 = String.ValueOf (s);Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, der Inhalt dieses Artikels wird für alle beim Lernen oder der Verwendung von Java hilfreich sein. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.