机上ではやっと気づいたけど、詳しくやらないといけないのは分かっている
- Autou 那は Qu に、生きた水の源が来たほどはっきりしているように頼みました - Zhu Xi クローンと
コピー
人P1 =
新しい
人 p2=p1; この時点では、p1 と p2 は両方ともメモリ内の同じオブジェクトを指しています。相手。 関数の引数がオブジェクトの場合、参照型が渡され、オブジェクト関数内の演算が外部オブジェクトに影響を与えます。 オブジェクトのコピーを転送したい場合は、objectの clone() メソッドを使用する必要があります。 ) コピー オブジェクトは参照ではなく新しいオブジェクトを返します。コピー オブジェクトと new 演算子によって返される新しいオブジェクトの違いは、コピー オブジェクトには初期情報ではなく、元のオブジェクトの情報が既に含まれていることです。オブジェクトの。 いつ使用するかhallow クローン (浅いコピー、シャドウ コピー) 、いつ 深いクローン (ディープ コピー) を使用するか: 主に、特定のドメイン オブジェクトの性質によって異なります。 基本タイプの場合は、浅いクローン を使用します。参照 変数 (参照 変数 ) はディープ クローン を使用します。 クローン作成の実装手順: (1) Cloneableインターフェースを実装します。Cloneableには、フラグインターフェースと呼ばれる抽象メソッドがありません。 (2) 基本クラスの clone メソッドをオーバーライドして public として宣言(3) 派生クラスの clone メソッドをオーバーライドして super.clone() を呼び出す
データ型(String) は新しいオブジェクトをコピーします
(2) 参照オブジェクトは引き続き同じオブジェクトを参照します。
浅いコピーのサンプルコード:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
|
1 2 |
|
(1)对存在的引用类型也进行拷贝,浅拷贝与深拷贝的代码还是有不同点的。
深拷贝代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
|
结果:
1 2 |
|
所有的值都进行了改变。
以上がJava クローン コード例の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。