Verständnisfrage zu Java-Ausgabe

Horst123

Neues Mitglied
Versuche gerade Java zu lernen und würde gerne wissen, ob ich das richtig verstanden habe:
Wäre die Ausgabe des untenstehenden Code-Fragments:
1: 1
2: 1
3: 1
4: 1
Sehe ich das richtig, dass die int-Variable n, die zu Beginn der start-Methode erzeugt und mit 0 initialisiert wird, nicht identisch ist mit der Klassenvariablen this.n vom Objekt zahl und deshalb this.n auch nach dem Aufruf von calc(n) noch bei 0 steht?
Oder sind beide Variablen/Objekte identisch und die Ausgabe ist deshalb bei 3+4 jeweils 2 statt 1?


Gegeben sei die folgende Klasse Zahl:
public class Zahl {
public int n;
public Zahl(int n) {
this.n = n;
}
}

Vollziehen Sie die Ausführung des folgenden Java-Programmfragments beim
Aufruf von start() nach. Notieren Sie die erzeugten Ausgaben und erläutern
Sie kurz die Gründe für eventuelle Unterschiede und Gemeinsamkeiten der
ausgegebenen Werte.

void calc(int n) {
++n;
System.out.println("1: " + n);
}

void calc(Zahl zahl) {
zahl.n++;
System.out.println("3: " + zahl.n);
}

void start() {
int n = 0;
Zahl zahl = new Zahl(0);
calc(n);
System.out.println("2: " + n);
calc(zahl);
System.out.println("4: " + zahl.n);
}
 

Paddelpirat

Bekanntes Mitglied
Sehe ich das richtig, dass die int-Variable n, die zu Beginn der start-Methode erzeugt und mit 0 initialisiert wird, nicht identisch ist mit der Klassenvariablen this.n vom Objekt zahl und deshalb this.n auch nach dem Aufruf von calc(n) noch bei 0 steht?

Edit: Sehe gerade das ich quatsch geschrieben habe. Schlecht eingerückt! ;-)

Also du hast ja eine Klasse Zahl mit einer globalen Variable
Code:
n
. Auf diese greifst du in dem Konstruktor mit
Code:
this.n
zu. Denn in dem Konstruktor
Code:
Zahl(int n)
deklarierst du ja noch eine lokale Variable
Code:
n
.

Dann weist du mit
Code:
this.n = n
der globalen Variable
Code:
n
den Wert der lokalen Variable
Code:
n
zu.

Die anderen Methoden befinden sich jetzt außerhalb der Klasse Zahl. Deswegen hatte ich das eben beim überfliegen falsch gesehen. In der Methode
Code:
start
initialisierst du, wie du richtig gesagt hast eine neue Variable
Code:
n
. Diese hat nichts mit der Variable
Code:
n
in der Klasse
Code:
Zahl
zu tun. Weder mit der globalen, noch mit der lokalen.

Deswegen erhöht sich nach dem Aufruf der Funktion calc(n) die lokale Variable
Code:
n
der Methode
Code:
start
. Nicht aber die Variable
Code:
n
in dem Objekt der Zahl.

Du kannst dir aber auch eine main-Methode schreiben und das ganze mal selber ausprobieren.
 
Zuletzt bearbeitet:

Horst123

Neues Mitglied
Vielen Dank für die Erklärung, dann hab ich's richtig verstanden, wobei deine Ausführung das noch mal verständlicher gemacht hat.
Werde das ganze heute Abend auch noch ausprobieren, kann das nur derzeit leider noch nicht, deshalb wollte ich hier kurz die nachfragen, um sicherzugehen, dass ich den Part verstanden habe, bevor ich weiterlese.
 
B

bone2

Gast
primitive datentypen werden immer nur kopiert, andres als objekten, bei denen nur dir referenz kopiert wird. Dann schau dir noch Scope an, damit du verstehst, welche Variable wo bekannt ist und verändert wird.

Code:
1
0
1
1
ist übrigends die ausgabe

n wird 0 gesetzt

ein neues objekt Zahl wird erstellt, mit startwert 0 für die int instantzvariable und in die Referenz auf das Objekt in der Variable zahl gespeichert

der Wert aus n wird in die calc-Methode kopiert, dort inkrementiert und ausgegeben
das n in start bekommt davon nicht mit und ist immernoch 0

die Referenz aus zahl auf das Objekt Zahl wird ins zweite calc kopiert
das int attribut vom Zahl Objekt an der übegebene Referenz wird inkrementiert

da die variable zahl immernoch die selbe Referenz kennt, ist nun auch in start die Eröhung bekannt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
Vivien Kurze Verständnisfrage zu Java Point aus java.awt.* Java Basics - Anfänger-Themen 5
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
M Java Version Verständnisfrage Java Basics - Anfänger-Themen 16
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
J Java Server Pages - Verständnisfrage Java Basics - Anfänger-Themen 2
M Kurze Verständnisfrage zu einer Java Aufgabe Java Basics - Anfänger-Themen 12
P Java Objekte - Verständnisfrage Java Basics - Anfänger-Themen 9
N verständnisfrage java.util.Calendar Java Basics - Anfänger-Themen 4
D Verständnisfrage: Java und MySql Java Basics - Anfänger-Themen 3
7 Java Interface - Verständnisfrage Java Basics - Anfänger-Themen 7
G Verständnisfrage beim Java Programm Java Basics - Anfänger-Themen 7
C Verständnisfrage Studium (Java programmieren) Java Basics - Anfänger-Themen 11
A Verständnisfrage Java Basics - Anfänger-Themen 12
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
P Verständnisfrage: PageFactory.initElements Java Basics - Anfänger-Themen 2
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
G while.next() Verständnisfrage Java Basics - Anfänger-Themen 16
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
J Verständnisfrage zu throws neben Funktionen Java Basics - Anfänger-Themen 2
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
P Verständnisfrage zum Mapping Java Basics - Anfänger-Themen 3
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Verständnisfrage zur Konsolenausgabe Java Basics - Anfänger-Themen 2
M Verständnisfrage zu Generics Java Basics - Anfänger-Themen 7
D Verständnisfrage zur Modellierung einer HDD Java Basics - Anfänger-Themen 17
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
S Verständnisfrage lokale Ordnerpfade Java Basics - Anfänger-Themen 1
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
C Verständnisfrage zu Modulo Java Basics - Anfänger-Themen 6
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
L Verständnisfrage - Speicherabbild Java Basics - Anfänger-Themen 4
melly_ Verständnisfrage zu args Java Basics - Anfänger-Themen 3
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
K Verständnisfrage eines Abschnitts Java Basics - Anfänger-Themen 6
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
S Modell View Controller Verständnisfrage Java Basics - Anfänger-Themen 24
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
JavaTalksToMe Erste Schritte Println-Frage (Verständnisfrage) Java Basics - Anfänger-Themen 1
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
G Collections Verständnisfrage zur For-Each-Schleife Java Basics - Anfänger-Themen 7
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
kilopack15 Verständnisfrage zur Verwendung von notify() bei Threads Java Basics - Anfänger-Themen 2
G Verständnisfrage zu for-each Java Basics - Anfänger-Themen 4
DontFeedTheTroll Erste Schritte Verständnisfrage zu If-Anweisung Java Basics - Anfänger-Themen 7
K Rekursion-Verständnisfrage Java Basics - Anfänger-Themen 4
Z Verständnisfrage Anfängerprogramm Java Basics - Anfänger-Themen 0
T Verständnisfrage Zuweisungs-/arithmet. Operatoren Java Basics - Anfänger-Themen 2
G Methoden Verständnisfrage zur Methoden Java Basics - Anfänger-Themen 7
LionAge Kapselung, Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 4
Z Verständnisfrage zum Multithreading Java Basics - Anfänger-Themen 3
R OOP / Verständnisfrage zum Konstuktor (siehe code) Java Basics - Anfänger-Themen 7
gamebreiti Verständnisfrage zu contains() Java Basics - Anfänger-Themen 10
A Verständnisfrage - Koordinatenumrechnung Java Basics - Anfänger-Themen 9
J Erste Schritte Verständnisfrage im Bezug auf das (richtige) Programmieren Java Basics - Anfänger-Themen 5
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
H Verständnisfrage Array Java Basics - Anfänger-Themen 2
I Interface Verständnisfrage Interfaces (Bsp.: Enumeration) Java Basics - Anfänger-Themen 2
I Verständnisfrage zu BridgePattern, Verwedung von super() Java Basics - Anfänger-Themen 4
P Verständnisfrage Java Basics - Anfänger-Themen 3
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
D Input/Output Verständnisfrage Verzeichnis-/Dateiliste erstellen & Dateikonvertierung Java Basics - Anfänger-Themen 1
S Verständnisfrage zu Anweisungen und deren Wirkung Java Basics - Anfänger-Themen 7
H Verständnisfrage für oder Anweisung Java Basics - Anfänger-Themen 8
E Threads Verständnisfrage bzgl. Threads und Sleep Java Basics - Anfänger-Themen 2
T Erste Schritte Verständnisfrage: Getter und Setter Methoden Java Basics - Anfänger-Themen 3
S Verständnisfrage Java Basics - Anfänger-Themen 2
N Verständnisfrage Code Java Basics - Anfänger-Themen 8
B Verständnisfrage Java Basics - Anfänger-Themen 2
H Interface Comparable Verständnisfrage Java Basics - Anfänger-Themen 6
B Verständnisfrage Codezeile Java Basics - Anfänger-Themen 7
B Verständnisfrage:Beispielprogramm BlueJ Java Basics - Anfänger-Themen 3
K Erste Schritte Kleine Verständnisfrage Java Basics - Anfänger-Themen 12
R Verständnisfrage Referenzvariablen in array Java Basics - Anfänger-Themen 3
M Verständnisfrage: Objekt erzeugen u. zuweisen Java Basics - Anfänger-Themen 16
I OOP Verständnisfrage zu Singelton Pattern Java Basics - Anfänger-Themen 21
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
S Verständnisfrage: Exception Gebrauch Java Basics - Anfänger-Themen 2
R Verständnisfrage NPE Java Basics - Anfänger-Themen 5
M Verständnisfrage zur Zahlenumwandlung (Dezimal-->Dual) Java Basics - Anfänger-Themen 25
N Verständnisfrage zu folgendem Programm Java Basics - Anfänger-Themen 2
L Grundlegende Verständnisfrage Hasmap Referenzen Java Basics - Anfänger-Themen 4
S Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 2
VfL_Freak Verständnisfrage zur Klasse "TIMER" Java Basics - Anfänger-Themen 7
P Verständnisfrage zu Instanzen/Objekten Java Basics - Anfänger-Themen 9
M Verständnisfrage im Umgang mit Map Java Basics - Anfänger-Themen 10
K Verständnisfrage zu int.length und String.length() Java Basics - Anfänger-Themen 4
G 2D Array gleichsetzen verständnisfrage Java Basics - Anfänger-Themen 2
M kleine und einfache Verständnisfrage Java Basics - Anfänger-Themen 3
G Datentypen bits, bytes, chars - Verständnisfrage Java Basics - Anfänger-Themen 5
E Verständnisfrage zu Shutdownhook Java Basics - Anfänger-Themen 5
F Rekursion Verständnisfrage Java Basics - Anfänger-Themen 6
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
Z Comparator Verständnisfrage Java Basics - Anfänger-Themen 5
D Verständnisfrage zu Funktionen Java Basics - Anfänger-Themen 6
H Verständnisfrage Persistenz Java Basics - Anfänger-Themen 10
neurox Verständnisfrage zu Threads Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben