1. Arrays
klasse
Zoals we eerder hebben opgemerkt, zijn arrays erg handig en worden ze vaak gebruikt bij het programmeren.
De makers van Java merkten al snel dat Java-programmeurs vaak dezelfde code schrijven wanneer ze met arrays werken. Kopieer bijvoorbeeld een deel van een array naar een andere array, codeer om elke cel van een array met dezelfde waarde te vullen, geef de inhoud van een array weer in een handig formaat, enz.
Daarom hebben ze de speciale Arrays
klasse gemaakt (de volledige naam is java.util.Arrays
), en hebben de meest populaire array-gerelateerde acties erin gestopt.
Het heeft veel methoden voor elke gelegenheid, maar eerst zullen we er slechts 10 bekijken - de eenvoudigste en meest gebruikte.
2.Arrays.toString()
De eerste methode die we zullen bekijken heet Arrays.toString()
. Maar eerst een beetje achtergrond.
Elke array in Java heeft een toString()
methode die een 'tekstuele weergave van de array' retourneert. U kunt een tekstuele weergave van een array krijgen met behulp van de volgende instructie:
String str = name.toString();
Waar name
is de naam van de arrayvariabele en str
is de naam van de variabele waarin de tekenreeksrepresentatie van de array wordt opgeslagen.
Maar als u de array met de methode naar het scherm probeert af te drukken, ziet u waarschijnlijk zoiets als dit:System.out.println(name)
I@37afeb11
De eerste letter I
betekent dat het een int
array is en de symbolen erna @
zijn het adres van de array in het geheugen. Aan de ene kant is dit precies de informatie die is opgeslagen in de array-variabele, maar aan de andere kant hadden we iets anders verwacht, toch?
We wilden de waarden in de array zien! En dat is precies waarom ze de methode bedachten Arrays.toString()
- om de waarden van een array weer te geven. We noemen het zo:
String str = Arrays.toString(name);
Voorbeelden:
|
De str variabele zal de string bevatten:
|
|
De str variabele zal de string bevatten:
|
|
De str variabele zal de string bevatten:
|
3.Arrays.deepToString()
Maar als je een tweedimensionale array probeert te converteren naar een string (om het weer te geven) using the Arrays.toString()
methode, zie je iets bekends:
[I@37afeb11, I@37afeb21, I@37afeb31]
Dit komt allemaal omdat de cellen van een tweedimensionale array verwijzingen naar eendimensionale arrays opslaan. En hoe worden eendimensionale arrays omgezet in een string? Precies zoals je hierboven ziet.
Wat gedaan kan worden? Hoe geven we een tweedimensionale array correct weer?
Daartoe Arrays
heeft de klasse nog een speciale methode — deepToString()
. Bellen ziet er zo uit:
String str = Arrays.deepToString(name);
Deze methode kan arrays doorgeven die tweedimensionaal, eendimensionaal, driedimensionaal of, in het algemeen, elke dimensie zijn, en het zal altijd de elementen van de array weergeven.
Opmerking: de Arrays.deepToString()
methode werkt niet met eendimensionale arrays van primitieven (bijvoorbeeld int[]
).
Voorbeelden:
|
De str variabele zal de string bevatten:
|
|
De str variabele zal de string bevatten:
|
|
De str variabele zal de string bevatten:
|
4.Arrays.equals()
We hebben ontdekt hoe we arrays op het scherm kunnen weergeven, maar hoe zit het met het vergelijken van arrays?
Om strings te vergelijken, hebben we equals
en equalsIgnoreCase
methoden, maar welke methoden hebben arrays?
Het goede nieuws is dat arrays een equals
methode hebben. Het slechte nieuws is dat het de inhoud van de arrays niet vergelijkt. De equals
methode van arrays doet hetzelfde als de ==
operator: het vergelijkt referenties. Voorbeelden:
Voorbeelden:
|
false (de referenties zijn niet gelijk) |
|
De equals methode arrays vergelijkt eenvoudigweg de referenties van twee arrays. false (de referenties zijn niet gelijk) |
Wat gedaan kan worden? Hoe vergelijken we arrays op basis van hun inhoud?
En opnieuw Arrays
komt het ons te hulp, of meer specifiek, zijn Arrays.equals()
methode. Zo noemen we het:
Arrays.equals(name1, name2)
De methode retourneert true
als de arrays even lang zijn en hun elementen gelijk zijn. Anders keert het terug false
.
Voorbeelden:
|
De equals methode arrays vergelijkt eenvoudigweg de referenties van twee arrays. false (de referenties zijn niet gelijk) |
|
true (de inhoud is gelijk) |
|
false (de inhoud van de arrays is verschillend) |
5.Arrays.deepEquals()
En, zoals je waarschijnlijk al vermoedde, Arrays.equals
zal de methode niet correct werken voor tweedimensionale arrays: het behandelt tweedimensionale arrays als een eendimensionale array waarvan de elementen adressen zijn van eendimensionale arrays.
Dus om multidimensionale arrays ( n = 1, 2, 3,...
) correct te vergelijken, bedachten ze de Arrays.deepEquals()
methode. Bellen ziet er zo uit:
Arrays.deepEquals(name1, name2)
De methode keert terugtrue
als de arrays even lang zijn en hun elementen gelijk zijn. Anders keert het terugfalse
. Als de elementen in de array ook arrays zijn, Arrays.deepEquals()
wordt de methode gebruikt om ze te vergelijken, enzovoort.
Voorbeelden:
|
De equals methode arrays vergelijkt eenvoudigweg de referenties van twee arrays. false (de referenties zijn niet gelijk) |
|
De Arrays.equals methode vergelijkt en als eendimensionale arrays die referenties opslaan. Ze bevatten verschillende referenties. (de inhoud van de arrays is niet gelijk) x1 x2 false |
|
true (de inhoud is gelijk) |
GO TO FULL VERSION