Klonen von Arrays/ Matrizenrechnung

Hallo zusammen,

in unserem Skript gibt es drei Seiten, die mich völlig verwirren. Ich poste sie und stell jeweils die Fragen, die ich zur Folie habe darunter.

6.6. KLONEN VON ARRAYS
6.6 Klonen von Arrays
Statt wie bislang Arrays zu kopieren, kann man mit der Methode clone() ein identisches
Abbild im Speicher erstellen. So wie die Wertzuweisung nur die Referenzen kopiert, so vergleicht
der Gleichheits-Operator == auch nur die Referenzen auf Gleichheit. Für Arrays
gibt es in der Klasse Arrays die (Klassen-) Methode Arrays.equals() . Die Methode clone()
wird in der Wurzelklasse Object definiert und von der aus dieser Klasse abgeleiteten
Arrays geerbt! Ihr Rückgabewert ist eine Referenz auf Object und muss dann auf Arrays
ge-cast-et werden! Diese neue Referenz referenziert den Klon!
Programm 6.15, , zeigt eine kleine Anwendung.
Programm 6.15: Klonen und Vergleichen (ArrayClone.java)
Java:
1 import java.util.Arrays; // wegen Arrays.equals()
2
3 public class ArrayClone {
4 public static void main(String[] args) {
5
6 int [] a = {1,2,3};
7 int [] b = (int []) a.clone ();
8 if (a == b )
9 System.out.println( "a and b are equal");
10 else
11 System.out.println( "a and b are not equal");
12 if (Arrays.equals(a,b) )
13 System.out.println( "a and b are equivalent");
14 else
15 System.out.println( "a and b are not equivalent");
16
17 b[1] = 100;
18 if (Arrays.equals(a,b) )
19 System.out.println( "a and b are equivalent");
20 else
21 System.out.println( "a and b are no longer equivalent");
22
23 for (int i = 0; i < a.length; i++)
24 System.out.println( "a[" + i + " ] = " + a[ i ] + " / b[" + i + " ] = " + b[ i ]);
25 System.out.println ();
26 }
27 }
Übersetzung und Ausführung:

Code:
spatz$ javac ArrayClone.java
spatz$ java ArrayClone
a and b are not equal
a and b are equivalent
a and b are no longer equivalent
a[0] = 1 / b[0] = 1
a[1] = 2 / b[1] = 100
a[2] = 3 / b[2] = 3
spatz$

Nach meinem Verständnis des Programms sollte eher das rauskommen
Code:
a and b are  equal
a and b are equivalent
a and b are no longer equivalent
a[0] = 1 / b[0] = 1
a[1] = 2 / b[1] = 100
a[2] = 3 / b[2] = 3

da wenn ich es richtig verstanden habe, wird zuerst der Vektor kopiert und erst in Zeile 17 wird die Zeile b mit 100 ausgetauscht.

Was ist eine Referenz?

KAPITEL 6. ARRAY
Klonen bei mehrdimensionalen Arrays zeigt beispielhaft Programm 6.16, S. 114.
Programm 6.16: Klonen mehrdimensionaler Arrays (ArrayClone1.java)
Java:
1 import java.util .∗;
2
3 public class ArrayClone1 {
4 public static void main(String[] args) {
5
6 int [][] data = {{1,2,3,4}, {5,6}, {7,8,9}};
7 // Kopie vorbereiten
8 int [][] copy = new int[data.length][];
9 // Referenzen klonen
10 for(int i =0; i < data.length; i++)
11 copy[ i ] = (int []) data[i ]. clone ();
12 if (Arrays.equals(data,copy) )
13 System.out.println( "data and copy are equivalent");
14 else
15 System.out.println( "data and copy are not equivalent");
16 for(int i = 0; i < copy.length; i++) {
17 for(int j = 0; j < copy[ i ]. length; j++)
18 System.out.print( "" + copy[i ][ j ] + " " );
19 System.out.println ();
20 }
21 }
22 }
Übersetzung und Ausführung:
Code:
spatz$ javac ArrayClone1.java
spatz$ java ArrayClone1
data and copy are not equivalent
1 2 3 4
5 6
7 8 9
spatz$
Anm.: Es ist klar, dass data und copy nicht identisch sind – die Referenzen in der ersten
Dimension sind verschieden!

Warum sind data und copy verschieden?

Programm 6.19: Lösung eines linearen Gleichungssystems (LinGleichung.java)
Java:
1 import java.util.Formatter;
2 import Jama.Matrix;
3 public class LinGleichung{
4 public static void main(String[] args) {
5 int dim = 4;
6 double[][] a = { {2,1,0,1},
7 {1,2,4,1},
8 {0,1,3,1},
9 {1,3,1,0}
10 };
11 double [] b = {5,−10,−9,3};
12 Formatter fmt = new Formatter(System.out);
13 Matrix A = new Matrix(a);
14 Matrix B = new Matrix(b,4);
15 Matrix X = A.solve (B);
16 for (int i = 0; i < dim; i++){
17 fmt.format("%6.2f\n", X.get ( i ,0));
18 }
19 }
20 }
Code:
irazu$ javac LinGleichung.java
irazu$ java LinGleichung
1.00
2.00
-4.00
1.00
irazu$
In Zeile 2 wird aus dem Paket „Jama“ die Klasse „Matrix“ importiert.
In Zeile 13 definieren wird das Objekt A zur Klasse Matrix definiert und mit den Werten
aus dem zweidimensionalen Array a initialisiert.
In Zeile 14 passiert fast dasselbe, nur dass die Initialisierung aus einem eindimensionalen
Array mit den ersten 4 Werten erfolgt.
In Zeile 15 wird die Variable X zur Klasse Matrix definiert und mit dem Ergebnis des Aufrufes
A.solve(B) belegt: benutze die Methode solve() am Objekt A (als Matrix des Gleichungssystemes)
mit der rechten Seite B.
In Zeile 17 holen wir mit X.get(i,0) vom Objekt X das Element in der i-ten Zeile und 0-
ten Spalte!


Mir ist rätselhaft, wie man auf

1
2
-4
1

kommt. Ich hab es mit den vier Grundrechenarten probiert, aber immer andere Ergebnisse rausbekommen.

Edit: Ihr würdet mir auch schon weiterhelfen, wenn ihr nur zu einem Blatt antwortet;)
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Zum ersten:
Java:
if (a == b )
    System.out.println( "a and b are equal");
else
    System.out.println( "a and b are not equal");
Ich finde das ja eine SEHR unglückliche Benennung. Es gibt in Java in der Klasse "Object" die Methode "equal", und das WORT "equal" jetzt für den "=="-Vergleich zu verwenden (und stattdessen das Wort "equivalent" für das, was eigentlich "equal" heißt :autsch:) sorgt eher für Verwirrung. Ich finde, bei "==" sollte man eher von "identical" reden.

Also: Der Vergleich mit "==" liefert "false", weil es nicht zwei mal ein-und-dasSELBE Array ist - sondern zwei verschiedene Array-Objekte (die zwar den gleichen Inhalt haben, aber das interessiert beim ==-Vergleich nicht).

Das gleiche gilt auch für die zweite Frage, mit "data" und "copy". Schau dir mal den Unterschied an zwischen Arrays#equals und Arrays#deepEquals.

Zum letzten: Grundrechenarten? Weißt du, was ein Lineares Gleichungssystem ist und was die Lösung bedeutet?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T OOP Array Klonen Allgemeine Java-Themen 10
G JComponent in Vector - wie klonen? Allgemeine Java-Themen 7
G java.util.List klonen Allgemeine Java-Themen 17
I arraycopy und tiefes Klonen Allgemeine Java-Themen 3
P JButton klonen Allgemeine Java-Themen 8
S Hashtabelle klonen frage Allgemeine Java-Themen 8
P org.w3c.dom.Dom Objekt klonen Allgemeine Java-Themen 5
E BufferedWriter irgendwie klonen! Allgemeine Java-Themen 7
S Klassen klonen Allgemeine Java-Themen 2
Ü Arrays vergleichen Allgemeine Java-Themen 59
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Ü Eurobeträge in möglichst wenig Scheine/Münzen zerlegen (2D-Arrays) Allgemeine Java-Themen 27
Buroto Arrays generator Allgemeine Java-Themen 10
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
Muatasem Hammud Erstellung von Testdaten für Arrays Allgemeine Java-Themen 6
Junger_Basileus Attribute, Arrays, Schleifen Allgemeine Java-Themen 9
P Generics und Arrays Allgemeine Java-Themen 6
O Arrays an DOCX-Stamper Library übergeben Allgemeine Java-Themen 1
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
R Spalten/Zeilen verschieben in zweidimensionalen Arrays? Allgemeine Java-Themen 3
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
W Spaß mit Arrays Allgemeine Java-Themen 1
W Reflexion und Arrays Allgemeine Java-Themen 7
S Problem mit Arrays Allgemeine Java-Themen 1
D Erste Schritte Arrays vergleichen und die zahlen die nur einmal vorkommen ausgeben Allgemeine Java-Themen 5
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
Neoline Interpreter-Fehler Probleme mit Arrays.toString Allgemeine Java-Themen 7
H Zweidimensionale Arrays Allgemeine Java-Themen 6
Neoline Methoden Zwei Arrays abwechselnd zusammenführen Allgemeine Java-Themen 15
J Methoden clone(), arraycopy(): ein- und zweidimensionale Arrays Allgemeine Java-Themen 8
D Übereinstimmungen in Arrays Allgemeine Java-Themen 5
B Arrays mit Text und Zahlen füllen Allgemeine Java-Themen 3
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
J Arrays auf gleichheit untersuchen funktioniert nicht Allgemeine Java-Themen 11
N 2 Arrays abwechselnd verbinden Allgemeine Java-Themen 13
J private and arrays Allgemeine Java-Themen 2
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
C Zweidimensionale Arrays - Quadratisch? Allgemeine Java-Themen 4
AssELAss Zwei Arrays / ArrayLists inhaltlich vergleichen Allgemeine Java-Themen 2
A Lineare Interpolation mit zwei Arrays Allgemeine Java-Themen 4
S Datentypen Warum ist bei Arrays die Länge als Property aufrufbar? Allgemeine Java-Themen 1
Dechasa Vergleichen von zwei Arrays Allgemeine Java-Themen 4
DanielsLPecke Java Arrays an andere Java Programme schicken und zurück Allgemeine Java-Themen 5
H Arrays Allgemeine Java-Themen 4
J NullPointerExeption bei Inizialisierung eines Arrays Allgemeine Java-Themen 3
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3
B automatisch benannte arrays erstellen Allgemeine Java-Themen 9
Y inhalte aus 2 unterschiedlichen Arrays miteinander vergleichen Allgemeine Java-Themen 12
M Arrays.sort Problem Allgemeine Java-Themen 2
F Arrays Allgemeine Java-Themen 2
F Arrays Allgemeine Java-Themen 4
N Werte aus Arrays auslesen funktioniert nicht Allgemeine Java-Themen 5
F mehrdimensionale Arrays Allgemeine Java-Themen 4
A Methoden Generische Methode mit Arrays - Source Compatibility 1.7 benötigt, wieso? Allgemeine Java-Themen 3
S Java Problem bei der Rückgabe eines Arrays Allgemeine Java-Themen 19
I Verschiedene Arrays auslesen Allgemeine Java-Themen 6
R Wie kann man diese Methoden in arrays etablieren? Allgemeine Java-Themen 8
C Best Practice [Arrays] Wie sinnvoll prüfen, ob Array primitive Datentypen enthält? Allgemeine Java-Themen 6
C Best Practice Tiefe Kopie eines Arrays unbekannter Dimension und unbekannten Typs Allgemeine Java-Themen 4
R kann man irgendwie mit Arrays mit Eingabefenstern und Schleifen Werte abklappern? Allgemeine Java-Themen 2
R Was los mit dieser Aufgabe? Arrays mit Schachbrettmustern? Allgemeine Java-Themen 10
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
K Methoden Arrays auf true Werte prüfen Allgemeine Java-Themen 4
T String Arrays aus den Argumenten auslesen Allgemeine Java-Themen 3
E ArrayIndexOutOfBounds - mehrdimensionale Arrays Allgemeine Java-Themen 6
D Arrays überschreiben sich Allgemeine Java-Themen 2
K Mehrere Arrays auf einmal erstellen Allgemeine Java-Themen 2
P Arrays erzeugen Allgemeine Java-Themen 5
R ListIterator über mehrere Arrays Allgemeine Java-Themen 13
S Variablen Dynamische Arrays Allgemeine Java-Themen 2
O Variablen System.getenv: Sinnlose Werte, Arrays?! Allgemeine Java-Themen 6
C Arrays.asList() - Problem Allgemeine Java-Themen 3
M problem mit speicherbedarf von arrays Allgemeine Java-Themen 14
B Generics und primitve arrays Allgemeine Java-Themen 6
V Umbennen von Arrays Allgemeine Java-Themen 7
M Einfluss von Caching auf die Performance (große Arrays) Allgemeine Java-Themen 24
A Frage zu Arrays Allgemeine Java-Themen 6
S Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen Allgemeine Java-Themen 6
R Methoden Rückgabe Arrays aufangen Allgemeine Java-Themen 29
T Arrays erstellen Allgemeine Java-Themen 3
C Zwei Arrays vereinen Allgemeine Java-Themen 3
J Array Sortierung auf andere Arrays anwenden Allgemeine Java-Themen 6
D Vertauschen von arrays vom Typ String Allgemeine Java-Themen 2
BattleMaster246 Arrays funktionieren nicht Allgemeine Java-Themen 6
S "Arrays" mit String-Key? Allgemeine Java-Themen 3
L verkettete Listen oder Arrays + Indexlisten effizienter? Allgemeine Java-Themen 3
S Überprüfung/Parsen eines Byte-Arrays Allgemeine Java-Themen 9
Developer_X Aus Datei in Arrays laden-Problem Allgemeine Java-Themen 5
O Problem beim Ausgeben von Arrays Allgemeine Java-Themen 9
G Arrays.toString Allgemeine Java-Themen 4
S to string mit arrays Allgemeine Java-Themen 10
S Objekte mit Arrays Allgemeine Java-Themen 9
Meldanor Mehrdimensionale Arrays : Zugriff auf n-tes Array Allgemeine Java-Themen 5
K Arrays.asList und primitive Typen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben