Hey Leute,
über google bin ich auf folgenden Link -der den Titel dieses Threads hier behandelt- aus diesem Forum hier gestoplert:
http://www.java-forum.org/allgemeines/4904-call-value-call-reference.html
Das stimmt doch nicht was da steht oder? Er meint zwar noch, dass im Internet fälschlicherweise oft steht, dass Java bei Objekten call of reference benutzt, macht aber ein Besiepiel, wo es offensichtlich ist, dass ein call of refernce genutzt wird.
Hier mein Beispiel zu call by value (primitiven Datentypen) und call by referende (bei Objekten):
Ausgabe:
Es ist doch wohl offensichtlich, dass Java bei dem Vector call of reference benutzt, wohingegen bei dem primitiven Datentyp (int) ein call by value benutzt wird.
Wie denkt Ihr darüber?
über google bin ich auf folgenden Link -der den Titel dieses Threads hier behandelt- aus diesem Forum hier gestoplert:
http://www.java-forum.org/allgemeines/4904-call-value-call-reference.html
Das stimmt doch nicht was da steht oder? Er meint zwar noch, dass im Internet fälschlicherweise oft steht, dass Java bei Objekten call of reference benutzt, macht aber ein Besiepiel, wo es offensichtlich ist, dass ein call of refernce genutzt wird.
Hier mein Beispiel zu call by value (primitiven Datentypen) und call by referende (bei Objekten):
Java:
package call_by;
import java.util.Vector;
public class Foo {
private static void inkrement(int i) {
i++;
System.out.println("inkrement(i): " + i);
}
private static void inkrement(Vector<Integer> v) {
v.add(new Integer(666));
}
public static void main(String[] args) {
int i = 666;
System.out.println("main() - i:" + i);
inkrement(i);
System.out.println("main() - i: " + i);
Vector<Integer> v_int = new Vector<Integer>();
v_int.add(new Integer(1));
v_int.add(new Integer(2));
System.out.println("--- Vector vor dem Aufruf von inkrement(vector)");
int counter = 0;
for (Integer integer : v_int) {
System.out.println("vector[" + counter + "]: " + integer.intValue());
counter++;
}
System.out.println("--- Aufruf von inkrement(vector)");
inkrement(v_int);
System.out.println("--- Vector nach dem Aufruf von inkrement(vector)");
counter = 0;
for (Integer integer : v_int) {
System.out.println("vector[" + counter + "]: " + integer.intValue());
counter++;
}
}
}
Ausgabe:
Code:
main() - i:666
inkrement(i): 667
main() - i: 666
--- Vector vor dem Aufruf von inkrement(vector)
vector[0]: 1
vector[1]: 2
--- Aufruf von inkrement(vector)
--- Vector nach dem Aufruf von inkrement(vector)
vector[0]: 1
vector[1]: 2
vector[2]: 666
Es ist doch wohl offensichtlich, dass Java bei dem Vector call of reference benutzt, wohingegen bei dem primitiven Datentyp (int) ein call by value benutzt wird.
Wie denkt Ihr darüber?