[解決済み] コピーとクローンの違いは何ですか?
2022-02-28 14:14:52
質問
プログラミングでこれに関する決定的なリファレンスはあるのでしょうか?
ディープコピーとクローンを同じものとして言及する人を多く見かけます。 これは本当でしょうか?
言語依存なのでしょうか?
小さなことですが、気になったので...。
解決方法は?
そうですね、違いがありますね。言語依存性ですが、Shallow, Deep, Lazyのすべてのコピーができる言語もあります。Shallowコピーしかできない言語もあります。ですから、時には言語に依存することもあります。
では、たとえば配列の場合です。
int [] numbers = { 2, 3, 4, 5};
int [] numbersCopy = numbers;
numbersCopy」配列には同じ値が含まれていますが、より重要なのは、配列オブジェクト自体が「numbers」配列と同じオブジェクト参照を指していることです。
だから、もし私が次のようなことをしたら
numbersCopy[2] = 0;
次の文はどのような出力になるでしょうか?
System.out.println(numbers[2]);
System.out.println(numbersCopy[2]);
両方の配列が同じ参照を指すと考えると、次のようになります。
0
0
しかし、もし最初の配列のコピーを独自の参照で作成したい場合はどうしたらよいでしょうか?その場合は、配列のクローンを作成します。そうすることで、各配列は独自のオブジェクト参照を持つようになります。どのように動作するか見てみましょう。
int [] numbers = { 2, 3, 4, 5};
int [] numbersClone = (int[])numbers.clone();
numbersClone」配列には同じ値が含まれていますが、この場合、配列オブジェクト自体は「numbers」配列とは異なる参照を指しています。
そこで、もし私が次のようなことをしたら
numbersClone[2] = 0;
次の文の出力はどうなりますか?
System.out.println(numbers[2]);
System.out.println(numbersClone[2]);
ご想像のとおりです。
4
0
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み] 2つのリストを結合する
-
[解決済み】パラメータ付きRedirectToAction