私は値渡しとJavaで参照渡しについて質問があります。
私は、グラフとして長いdouble型の配列を表示するために書いた "Graph"クラスを持っています。(単純化された)コンストラクタは、次のようになります。
private double[] Values;
public Graph(double[] values) {
Values = values;
}
このアレイはかなり長くなり、妥当な量のメモリを占有します。
私の質問はこれです:コンストラクタを呼び出して新しいグラフを作成すると、配列 "Values"は渡された配列のコピーになりますか、それとも参照になりますか?
私の考えでは、プリミティブは「値渡し」で、オブジェクトは「参照渡し」です。これは配列がコピーであることを意味します。私はこの定義が技術的に正しいとは思っていませんが。
私が正しく、配列がコピーである場合、このクラスが使用するメモリ量を減らし、別のクラスから配列を参照するにはどうすればよいでしょうか? 抽象GetValues()メソッドはこれを実現する良い方法でしょうか?
ありがとうございます。
Chris。
Javaは=値渡し。 http://stackoverflow.com/questions/40480/is-java-pass-by-reference – Alfabravo
Javaは「値によって参照を渡す」。 –
低レベルのC言語でのjavaの受け渡しについて考える場合、最適なものは 'const Object *'です。これは定数オブジェクトへのポインタです。それを参照から外すことをお勧めします - それは既にC++用語で定義されているので、ちょうど混乱しており、javaとはまったく異なります。 – Voo