値渡しと参照渡し比較(PHP&JAVA)
Skrumエンジニアの根岸です。
今回はPHPとJAVAの値渡しと参照渡しについてまとめてみます。
変数へ代入する場合と引数として関数に渡す場合において、デフォルトの挙動が値渡しなのか参照渡しなのかをまとめています。
【PHP】
変数へ代入する場合 | 引数として関数に渡す場合 | |
---|---|---|
スカラー型 | 値渡し | 値渡し |
配列 | 値渡し | 値渡し |
オブジェクト | 参照渡し | 参照渡し |
(※ 参照渡しはPHPの場合、実際にはアドレスではなくエイリアス(変数のID)が渡されている)
【JAVA】
変数へ代入する場合 | 引数として関数に渡す場合 | |
---|---|---|
スカラー型 | 値渡し | 値渡し |
配列 | 参照渡し | 参照渡し |
オブジェクト | 参照渡し | 参照渡し |
(※ 参照渡しはJAVAの場合、厳密には「参照の値渡し」と呼ばれ本来の参照渡しとは少し異なる)