Hallöchen!
Ich hab mal wieder die Vorlesung geschwänzt....
Mein Problem ist folgendes:
Innerhalb einer static Methode wurde einem Array M2 das Array M1 zugewiesen, M2 = M1 (beide Arrays wurden schon in der main-Methode deklariert und mit Anfangswerten ausgestattet). Danach wurde M2 verändert.
Wenn nun M1 ausgegeben wird, zeigt es seltsamerweise dieselben Veränderungen wie M2....HÄH???
Außerhalb dieser Methode, also in der main-Methode, hat M2 wieder die Anfangswerte, M1 jedoch hat die Veränderungen beibehalten...HÄH?
Kann mir jemand erklären wie das kommt?
So sieht der Quelltext aus:
import java.io.*;
public class S16
{ public static void main (String[] arg)
{ int[] v = {1,2,3};
int[][] m1 = {{10,11,12},{13,14,15}},
m2 = {{-10,-11,-12},{-13,-14,-15}};
int a = 100, b = 200;
xxx(v, m1, m2, a, b);
System.out.print("\nPosition 7 : "+a+","+b);
System.out.print("\nPosition 8 : ");
for (int i=0; i<v.length; i++)
System.out.print(v[i]+",");
System.out.print("\nPosition 9 : ");
for (int i=0; i<m1.length; i++)
for (int j=0; j<m1[i].length; j++)
System.out.print(m1[i][j]+",");
System.out.print("\nPosition 10 :");
for (int i=0; i<m2.length; i++)
for (int j=0; j<m2[i].length; j++)
System.out.print(m2[i][j]+",");
}
static void xxx (int[] f, int[][] M1, int [][] M2, int a, int b)
{ M2 = M1;
System.out.print("\nPosition 1 : ");
for (int i=0; i<M2[0].length; i++)
System.out.print(M2[0][i]+",");
M2[1][1] = 0;
System.out.print("\nPosition 2 : ");
for (int i=0; i<M1[0].length; i++)
System.out.print(M1[1][i]+",");
M2[0] = f;
System.out.print("\nPosition 3 : ");
for (int i=0; i<M1[0].length; i++)
System.out.print(M1[0][i]+",");
for (int i=0; i<M2[0].length; i++)
M2[0][i] = 20+i;
System.out.print("\nPosition 4 : ");
for (int i=0; i<M1[0].length; i++)
System.out.print(M1[0][i]+",");
System.out.print("\nPosition 5 : ");
for (int i=0; i<f.length; i++)
System.out.print(f[i]+",");
a = a+1;
b = b+1;
System.out.print("\nPosition 6 : "+a+","+b);
}
}
(Wieso wird eigentlich die Formatierung nicht korrekt dargestellt...?)
Ich hab mal wieder die Vorlesung geschwänzt....
Mein Problem ist folgendes:
Innerhalb einer static Methode wurde einem Array M2 das Array M1 zugewiesen, M2 = M1 (beide Arrays wurden schon in der main-Methode deklariert und mit Anfangswerten ausgestattet). Danach wurde M2 verändert.
Wenn nun M1 ausgegeben wird, zeigt es seltsamerweise dieselben Veränderungen wie M2....HÄH???
Außerhalb dieser Methode, also in der main-Methode, hat M2 wieder die Anfangswerte, M1 jedoch hat die Veränderungen beibehalten...HÄH?
Kann mir jemand erklären wie das kommt?
So sieht der Quelltext aus:
import java.io.*;
public class S16
{ public static void main (String[] arg)
{ int[] v = {1,2,3};
int[][] m1 = {{10,11,12},{13,14,15}},
m2 = {{-10,-11,-12},{-13,-14,-15}};
int a = 100, b = 200;
xxx(v, m1, m2, a, b);
System.out.print("\nPosition 7 : "+a+","+b);
System.out.print("\nPosition 8 : ");
for (int i=0; i<v.length; i++)
System.out.print(v[i]+",");
System.out.print("\nPosition 9 : ");
for (int i=0; i<m1.length; i++)
for (int j=0; j<m1[i].length; j++)
System.out.print(m1[i][j]+",");
System.out.print("\nPosition 10 :");
for (int i=0; i<m2.length; i++)
for (int j=0; j<m2[i].length; j++)
System.out.print(m2[i][j]+",");
}
static void xxx (int[] f, int[][] M1, int [][] M2, int a, int b)
{ M2 = M1;
System.out.print("\nPosition 1 : ");
for (int i=0; i<M2[0].length; i++)
System.out.print(M2[0][i]+",");
M2[1][1] = 0;
System.out.print("\nPosition 2 : ");
for (int i=0; i<M1[0].length; i++)
System.out.print(M1[1][i]+",");
M2[0] = f;
System.out.print("\nPosition 3 : ");
for (int i=0; i<M1[0].length; i++)
System.out.print(M1[0][i]+",");
for (int i=0; i<M2[0].length; i++)
M2[0][i] = 20+i;
System.out.print("\nPosition 4 : ");
for (int i=0; i<M1[0].length; i++)
System.out.print(M1[0][i]+",");
System.out.print("\nPosition 5 : ");
for (int i=0; i<f.length; i++)
System.out.print(f[i]+",");
a = a+1;
b = b+1;
System.out.print("\nPosition 6 : "+a+","+b);
}
}
(Wieso wird eigentlich die Formatierung nicht korrekt dargestellt...?)
Comment