4

私は C/C++ の世界から来ました。多くの投稿で、Java には「参照渡し」(非プリミティブ用) があると人々が言うことを受け入れていないことに気付きました。彼らの主張は、この場合、参照のコピーが取られるということです。これは実際にCで参照渡しするときに起こることなので(ポインタのコピーが取られます)、私はこの正当性を理解できませんでした。Java についての私の理解が少ないため、次のように言います。

  • プリミティブ型は値渡しです。
  • 非プリミティブ型は参照によって渡されます。

私が間違っている?

4

1 に答える 1

4

C++ では、次の関数を検討してくださいvoid func(Type &arg);。ここで、arg( arg の内容ではなく実際の変数を) 変更すると、渡された引数に対する呼び出し元のビューが完全に変更されます。これは参照渡しです。と対比してvoid func(Type *arg);ください。ここでは、内容を変更できますが、何かにarg代入argすると、ポインターの値渡しのため、ローカルの変更のみになります。

Java では、すべての複合型で (目に見えない) ポインターによる受け渡しを使用しています。

于 2013-04-08T11:11:55.170 に答える