Java - Parameterübergabe und Gültigkeitsbereiche

Striker03

Mitglied
Guten Abend,
ich bin neu hier und ich hoffe, dass man mir hier weiterhelfen kann :)

Ich habe mehrere Fragen, ich fange mal bei einer Aufgabe an.

Wie lauten die Ausgaben des folgenden Java-Programms? Schreiben Sie die Ausgaben
in die vorgegebenen Bereiche.


import java.io.*;
class Digit {
public int i;
}
public class PassObject {
static void f(Digit y, int j) {
y.i = 3 + j;
}
public static void main(String[] args) {
Digit a = new Digit();
Digit b = new Digit();
a.i = 5;
f(a,7);
System.out.println(a.i); ______________________
b.i = 47;
a = b;
System.out.println(a.i + " " + b.i); ______________________
a.i = 27;
System.out.println(a.i + " " + b.i); ______________________
}
}

Auf was achte ich dort?

System.out.println(a.i) hier würde ich sagen dass es 5 ausgeben würde, da a.i = 5 ist. was ist f(a,7) hiermit gemeint?
beim zweiten bin ich mir nicht sicher da a = b gilt denke ich 47+47? oder 5+5? :S ja beim dritten bin ich mir auch nicht sicher.
Entweder 27+47 oder 27+5? :S

kann mir hier jmd weiterhelfen?


LG
 

Striker03

Mitglied
Hallo,
ich habe es ausgeführt, aber ich verstehe nicht warum es bei dem ersten s.o.p. 10 ausgibt?
bei dem zweiten war es halt 47+47 und beim dritten 27+27.
 

jovo

Mitglied
Moin,

Nun ja, du hast ja 2 Objekte. Einmal a und b vom Typ Digit. Durch a.i = 5, wird zunächst die Variabel i von a mit einer 5 initialisiert.
Jetzt ruft er f(a,7) auf. Was es genau tut, kannst du oben ja doch schon sehen. es führt a.i = 3+7 = 10 aus. Also printet es ja dann eine 10 ^^. Anschließend b.i = 47. Das ist natürlich eine andere Variabel. Also b.i = 47 und a.i = 5. Durch a = b zeigt a nun anschließend auf das Objekt von b. Es gibt somit lediglich nur ein einziges Objekt, welches mit a oder b angesprochen werden kann. Also ist a.i = 47 und b.i 47 (ist ja das selbe Objekt). Es printet 47 47 aus^^ Was für ein Wunder... Nun ja durch a.i = 27 veränderst du das Objekt. also ist a.i = 27 und b.i = 27 usw.

MFG jovo
 

Neue Themen


Oben