http://www.javaworld.com/javaqa/2000-05/03-qa-0526-pass.html
hancock: ich hatte es verscuht zu erklären. es gibt hier einen unterschied bzgl. was man als value betrachtet.
wenn du c/c++ nimmst und du hast ein objekt als parameter:
void methode( MyClass a )
dann hast du hier ein pass by value. es wird der komplette inhalt von a kopiert.
in java ist:
void methode( MyClass a )
aber ein pass-by-reference aus sicht des objekts. man betrachtet (leider) im allgemeinen java so, als hätte es KEINE pointer. damit ist das da oben ein call-by-reference.
wenn man aber "MyClass a" aber als einen pointer des typs MyClass versteht, dann hat man ein pass-by-value der POINTER/REFERENZ-variable a.
insofern: SYNTAKTISCH werden die objekte PASS-BY-REFERENZ übergeben. aus sicht des kompilers sind es aber nur referenzvariablen, die pass-by-value übergeben werden.
ich hoffe ich konnte mich jetzt klar genug ausdrücken.
edit: ob es pass-by-value oder by reference ist hängt einzig und alleine von der frage ab, ob man "a" defineirt als "MyClass a" als ein Objektvariable versteht oder als eine Pointervariable.
Ich hab mich lange nicht mehr mit solchen nebensächlichkeiten beschäftigt, aber fürher hieß es mal, dass es keine pointer seien sollen. halte ich nicht für sinnvoll, aber wenn man das so betrachtet, dann ist es ein pass-by-reference.
frage: gibt es keine referenzvariablen in java für eine Klasse MyClass oder keine valuevariablen? such es dir aus. jeh nach dem, wie du dich entscheidest hast du ein pas-by-value oder pass-by-reference.