Anfängerfrage zu Array

Status
Nicht offen für weitere Antworten.

stevie

Mitglied
Hallo!

Ich habe eine Frage zu diesem Code:

Code:
public class CallTest { 
   public static void test(int[] a) { 
     int [] x = new int[3]; 
     a[1] = 3; 
     a = x; 
   } 

   public static void main(String [] args) { 
     int [] t = {5,6,7}; 
     System.out.println(t[1]); 
     test( t ); 
     System.out.println(t[1]); 
   } 
  
 }
Die erste Ausgabe ist klar (6)
Dann wird test aufgerufen und das Array übergeben (bei Array ist das aber call by reference?)

Neues Array x

Array a wird verändert

Die nächste Zeile (a = x) bereitet mir aber Probleme. a und x zeigen doch ab hier auf die selbe Adresse??? Wieso ist dann die nächste Ausgabe 3 und nicht 0?

Wenn ich die Methode test so abändere:

Code:
public static void test(int[] a) {
  int [] x = new int[]{1,1,1};
  a[1] = 3;
  a = x;

  for (int i:x)
     System.out.print(i + "-");
     System.out.print("\n");

  for (int i:a)
     System.out.print(i + "-");
     System.out.print("\n");
}

dann erhalte ich diese Ausgabe:
6
1-1-1-
1-1-1-
3

Kann mir das bitte jemand erklären?
 
S

SlaterB

Gast
> Wieso ist dann die nächste Ausgabe 3 und nicht 0?

in der main? die Variable t in der main zeigt immer noch auf das erste Array,
nur weil du in irgendeiner Untermethode irgendeinen Parameter etwas neu zuweist, interessiert das doch den Aufrufer nicht (unbedingt)

-----

was ist beim Zweiten die Frage?
zweimal 1, 1, 1 ausgegeben? weil x und a doch dasselbe Array sind bzw. auf dasselbe Array zeigen,
 
G

Gast

Gast
Im ersten Fall gibst du 2 Mal t[1] aus in der Methode test ist die Referenz a zwar irgendwann mal auf der neuen Speicheradresse aber in der main-Methode zeigt t immernoch auf die alte Adresse.
 

stevie

Mitglied
Danke erstmal für eure schnellen Antworten. Ganz verstanden habe ich es aber leider noch nicht.

Beim ersten Beispiel ist die Ausgabe: 6 und 3
Also wird das Array t von der Untermethode verändert!

Aber
a[1] = 3;
und
a = x;
scheinen 2 verschiedene a's zu sein (sonst müsste die Ausgabe in der main doch 6 und 0 sein) - und da verstehe ich nicht warum ...

Danke!
 
S

SlaterB

Gast
> a[1] = 3;

a zeigt auf dasselbe Array wie t (Array 1),
also wirkt sich die Änderung von a auch auf das t-Array aus,
es ist ja nur ein Array da welches verändert werden könnte


> a = x;

der lokalen Variable a wird ein neues Objekt (Array 2) zugewiesen,
aber das interessiert t nicht, t referenziert immer noch das Array 1

man kann Objekte ändern, aber nicht Referenzen,

Array 1 ist ein Objekt welches gemeinsam bekannt ist,
a, x und t sind aber unterschiedliche Variablen/ Referenzen
 

Leroy42

Top Contributor
stevie hat gesagt.:
Hallo!
...
Dann wird test aufgerufen und das Array übergeben (bei Array ist das aber call by reference?)
...

Schon hier ist der Denkfehler: In Java wird nie etwas by reference übergeben.

Die Array-Referenz wird kopiert übergeben. Dadurch sind zwar die Objekte
in der aufgerufenen Methode veränderbar, aber niemals die Referenz auf das Array selbst. :meld:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Anfängerfrage zu array(-Syntax) Java Basics - Anfänger-Themen 6
A Anfängerfrage - array required, but java.lang.String found Java Basics - Anfänger-Themen 7
D Anfängerfrage zu meinem Programm. Java Basics - Anfänger-Themen 15
V Anfängerfrage: HelloWorld läuft nicht Java Basics - Anfänger-Themen 3
F if else if anfängerfrage Java Basics - Anfänger-Themen 22
P Anfängerfrage, Primitiv,komplex Java Basics - Anfänger-Themen 1
pkm Erste Schritte Anfängerfrage zu ::new Java Basics - Anfänger-Themen 4
A Anfängerfrage Java Basics - Anfänger-Themen 7
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
R Anfängerfrage zu Methoden in Vererbte Klassen Java Basics - Anfänger-Themen 2
F Erste Schritte (Gelöst) Anfängerfrage Arraylist ausserhalb der Main Methode Java Basics - Anfänger-Themen 2
DeVolt Anfängerfrage zu util.scanner Java Basics - Anfänger-Themen 2
T Anfängerfrage zu Schleifen und Arrays Java Basics - Anfänger-Themen 5
B Collections ArrayList füllen - Anfängerfrage Java Basics - Anfänger-Themen 1
Shams Anfängerfrage zu jnlp Java Basics - Anfänger-Themen 0
T Kleine Anfängerfrage :) Java Basics - Anfänger-Themen 4
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
F Anfängerfrage zu extends Java Basics - Anfänger-Themen 12
A Anfängerfrage: Zahlformat prüfen Java Basics - Anfänger-Themen 4
I Anfängerfrage: Fehlersuche Java Basics - Anfänger-Themen 2
A Methoden Anfängerfrage: 2 Listen Vergleichen Java Basics - Anfänger-Themen 7
L Anfängerfrage zu TileMap Java Basics - Anfänger-Themen 4
J anfängerfrage Java Basics - Anfänger-Themen 10
J Anfängerfrage HelloWorld? cmd-Problem Java Basics - Anfänger-Themen 35
J Anfängerfrage zu Grundlagen von Packages Java Basics - Anfänger-Themen 7
J Anfängerfrage zur Variablen Java Basics - Anfänger-Themen 11
J Anfängerfrage :-) Java Basics - Anfänger-Themen 5
M Banale Anfängerfrage Java Basics - Anfänger-Themen 3
J Leichte Java Anfängerfrage. Bitte schnelle Antwort. :) Java Basics - Anfänger-Themen 10
U Anfängerfrage - Multithreading Java Basics - Anfänger-Themen 8
T Aufrufen von get-Methode aus anderer Klasse (absolute Anfängerfrage) Java Basics - Anfänger-Themen 2
G Anfängerfrage zu "@Override" Java Basics - Anfänger-Themen 5
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
M Kleine Anfängerfrage Java Basics - Anfänger-Themen 10
K Anfängerfrage: Fehlermeldung Java Basics - Anfänger-Themen 6
D Anfängerfrage N. Office Access NOA: setHidden und dann . Java Basics - Anfänger-Themen 2
N Anfängerfrage Java Basics - Anfänger-Themen 14
N anfängerfrage. returnwerte Java Basics - Anfänger-Themen 3
Gama Importieren von Klassen [Anfängerfrage] Java Basics - Anfänger-Themen 3
G Anfängerfrage Java Basics - Anfänger-Themen 11
B Anfängerfrage zu Swing "Reload" Java Basics - Anfänger-Themen 2
N Anfängerfrage bezüglich Speicherverwaltung Java Basics - Anfänger-Themen 3
G Anfängerfrage zu Threads Java Basics - Anfänger-Themen 14
Q Anfängerfrage Java Basics - Anfänger-Themen 6
J Anfängerfrage: wie externe Dateien importieren? Java Basics - Anfänger-Themen 5
S Anfängerfrage Java Basics - Anfänger-Themen 7
G Anfängerfrage zu Vererbung Java Basics - Anfänger-Themen 6
B Anfängerfrage zu 'NoClassDefFoundError' Java Basics - Anfänger-Themen 2
J IO Frage Hex-Output - Anfängerfrage Java Basics - Anfänger-Themen 5
T Anfängerfrage -> Projekt Java Basics - Anfänger-Themen 2
C Anfängerfrage ->Objekte und Arrays Java Basics - Anfänger-Themen 4
V Anfängerfrage Java Basics - Anfänger-Themen 8
E RMI Anfängerfrage Java Basics - Anfänger-Themen 10
DEvent anfängerfrage: wieso layout erst beim verändern? Java Basics - Anfänger-Themen 6
G Anfängerfrage Java Basics - Anfänger-Themen 2
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben