2013年4月22日月曜日

Javaの関数の引数について ーJavaの値渡しと参照渡しの誤解ー

昨日Twitterで宣言しましたが、Javaの引数について書きたいと思います。

Javaの引数は基本的に、

プリミティブ型=Call By Value = 値渡し
オブジェクト型=Call By Reference = 参照渡し

になります。

で、Call By Referenceの説明で
String型を使って以下の説明をしているのが多くあります。

さあ、ここで問題です!
出力は何になるでしょうか?

答えは、
”before method call”
です。

当たり前です(^^)/

C言語で書くと、


こうやってるのと同等です。

それ、C言語で言うと、ポインタのポインタを使わないと
出来ませんよ^^;;;

あと、



これも同じです!
これも同じC言語のポインタのポインタ使わないと^^;;;

Call By Referenceの説明で、上の例を使って、Call By Referenceだけど・・・
なんて説明しているのは間違いです!

C言語でいう、ポインタの概念をちゃんと理解しないと実は
この辺りって理解が難しいかもですね!

あ!
constじゃないととか、そういうツッコミはなしね^^
あくまで例なので!