Call by ...

Status
Nicht offen für weitere Antworten.

Spin

Top Contributor
Hier finde ich es ganz gut erklärt.

Wenn du ein einfacheres Beispiel brauchts , sag bescheid, grüße


Call by Value

Java:
private final double MWST = 1.19;
void bearbeiteArtikel(int i_nr, double d_Wert)
{
double d_ArtikelBrutto = d_Wert * MWST;
System.out.println("Artikel" + i_nr + "netto:" + d_Wert + "Brutto:" + d_ArtikelBrutto);
}
public static void main(String[]args)
{
bearbeiteArtikel(1, 12.90);
bearbeiteArtikel(2, 1.90);
}

Call by Reference

Java:
private final double MWST = 1.19;
void berechneBrutto(double d_Wert, double  rdOutWert)
{
rdOutWert = d_Wert * MWST;
}
public static void main(String[]args)
{
double dBrutto;
berechneBrutto(12.90, dBrutto);
System.out.println(dBrutto);
berechneBrutto(25.90, dBrutto);
System.out.println(dBrutto);
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Auch auf die Gefahr hin, deine Hausaufgaben zu machen ;)

In Java gibt es NUR call by value. In C++ gibt es auch call by reference.

Ein Beispiel:
Code:
// Call by reference

void main()
{
    int a = 1;
    byReference(a);
    // Hier is a==2

    byValue(a);
    // Hier is immernoch a==2
}

void byReference(int &x) // Das & heißt call-by-reference
{
    // Hier is x==1
    x = 2;
}

void byValue(int x)
{
    // Hier is x==2
    x = 3;
}
 

Atze

Top Contributor
call by value (primitive Datentypen, geclonte Objekte):
an eine methode wird eine kopie übergeben, und damit weitergearbeitet, also der ausgangswert verändert sich nicht!
bsp:
Java:
int x = 1;
methode(int x){ /* x wird verändert*/ }
// x außerhalb der methode ist immernoch 1, da in der methode nur mit ner kopie gearbeitet wird

call by reference (in java alle Objekte, nur keine primitiven Datentypen):
Java:
Object yxz = null;
methode(Object yxz){ /* Object yxz wird verändert*/ }
// xyz hat außerhalb der methode den wert, den es in der methode bekommen hat, weil in der methode auf einer referenz von xyz gearbeitet wird
 
G

Gastredner

Gast
Marco13 hat gesagt.:
In Java gibt es NUR call by value.
Also, ich hatte das eigentlich so gelernt, dass Java bei primitiven Datentypen mit Call by Value arbeitet, bei Objekten allerdings implizit mit Call by Reference. Oder irre ich mich da?
 

Atze

Top Contributor
also meinst du, du arbeitest bei nem methodenaufruf mit einem übergebenen objekt mit ner kopie? oder streiten wir uns jetzt über die haarspalterei, das man der methode dann eine kopie der referenz übergibt? :)
 

Spin

Top Contributor
Naja schon ^^

Wenn man Object a = "null";

Und wenn ich nun a übergebe an eine Methode , wird doch meine Referenz übergeben.
call by reference ...so habe ich es auch gelernt , egal wie , man machts ja schon automatisch^^
 

tfa

Top Contributor
Ja, eine Kopie der Referenz wird "by-value" übergeben. Das ist kein Call-by-Reference.
 

Atze

Top Contributor
ja @tfa, aber es hat den selben effekt :) eine referenz auf das objekt eben :) auch wenns nur ne kopie der eigentlichen referenz ist! :D
 

tfa

Top Contributor
Call-by-Reference ist aber was völlig anderes. Siehe das C-Beispiel oben. Das gibt es in Java nicht.
 
M

maki

Gast
also meinst du, du arbeitest bei nem methodenaufruf mit einem übergebenen objekt mit ner kopie? oder streiten wir uns jetzt über die haarspalterei, das man der methode dann eine kopie der referenz übergibt? :)
Es gibt in Java keinen Call-By-Rerefence, wurdfe doch schon gesagt.
Die Tatsache dass du in Java keine Objekte übergibst sondern nur Referenzen ändert da nix daran.
 

Noctarius

Top Contributor
Hat es nicht. Bei Call-By-Reference würde ich der externen Referenz innerhalb der Methode einen neuen Wert zuweisen können, kann ich bei Java aber nicht!

Java:
public class Foo {
    public static void main(String[] args) {
        Foo foo = new Foo();
        bar(foo);
        System.out.println(foo != null); // <= true!!!
    }
 
    public static void bar(Foo foo) {
        foo = null;
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java call by Value oder Reference Java Basics - Anfänger-Themen 35
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
K Eigene Annotations, Pre-/Post-/Call-Method Java Basics - Anfänger-Themen 6
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
H call by reference & value Java Basics - Anfänger-Themen 14
B Call by Value/Reference Java Basics - Anfänger-Themen 4
Joew0815 Methoden Objekt als Methoden-Parameter - Kein call-by-reference? Java Basics - Anfänger-Themen 12
T Array prozedur, call by reference ? Java Basics - Anfänger-Themen 6
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
S call by reference? Java Basics - Anfänger-Themen 52
R Call By Referene? Java Basics - Anfänger-Themen 10
F Verständisproblem bzgl. nicht Vorhandensein von Call-by-reference Java Basics - Anfänger-Themen 2
B Call By reference (Null pointer exception) Java Basics - Anfänger-Themen 6
N Methode erfüllt nicht den zweck (Call by value) Java Basics - Anfänger-Themen 17
0 Call by value Java Basics - Anfänger-Themen 3
C Call by reference Java Basics - Anfänger-Themen 11
W call-by-reference-Effekt bei Objekten Java Basics - Anfänger-Themen 3
S "Call by Reference" Java Basics - Anfänger-Themen 12
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S call by reference Java Basics - Anfänger-Themen 7
F java call jython Java Basics - Anfänger-Themen 7
C Unchecked Call? Wie Warnung beseitigen? Java Basics - Anfänger-Themen 3
F Wie kann ich call by reference umgehen? Java Basics - Anfänger-Themen 14
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
I call to super must be first statement in constructor Java Basics - Anfänger-Themen 3
F Call-By-Reference umgehen Java Basics - Anfänger-Themen 4
B Call by Reference Java Basics - Anfänger-Themen 7
S call by reference vs. call by value - pls help Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben