a) Warum kann man die beiden Felder a und b nicht mittels a == vergleichen ?
Der ==
Operator bei Objekten vergleicht die Referenzen auf die Objekte und nicht die Objektinhalte.
public static void main(String... args) {
int[] a = new int[]{1,2,3,4,5,6,7};
int[] b = new int[]{1,2,3,4,5,6,7};
System.out.println(a==b); // liefert false!
}
wie könnte ein Programmstück aussehen, dass beide Felder miteinander vergleicht?
Das Programmstück könnte wie folgt aussehen:
public static boolean equals(final int[] a, final int[] b){
// Vergleich der Länge -> false zurückgeben, falls
if(a.length != b.length){
return false;
}
// Vergleiche alle Elemente miteinander ...
for(int i = 0; i < a.length /*hier könnte auch b.length stehen*/; i++){
// Gib false zurück, sobald der erste Unterschied der Feld-Elemente aufritt.
if(a[i] != b[i]){
return false;
}
}
// Die Felder sind gleich.
return true;
}
Ein Test zeigt:
public static void main(String... args) {
int[] a = new int[]{1,2,3,4,5,6,7};
int[] b = new int[]{1,2,3,4,5,6,7};
System.out.println(equals(a,b)); // liefert true!
}