回答編集履歴

6

解決策の追加

2018/08/16 08:58

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -1,3 +1,17 @@
1
+ まとめ
2
+
3
+ ・`new`で格納場所を確保する
4
+
5
+ ・参照型の場合は`new =`で代入しても参照アドレスがコピーされるだけ
6
+
7
+ ・参照型の場合はfor文などを使ってコピー
8
+
9
+
10
+
11
+ ---
12
+
13
+
14
+
1
15
  解決になるか分かりませんが自分なりにコピーするならこれが今のところ最適かなと思います。
2
16
 
3
17
 

5

参考URLの追加

2018/08/16 08:58

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -108,6 +108,10 @@
108
108
 
109
109
 
110
110
 
111
+ [ 参照型配列のコピー](https://www.milk-island.net/document/java/kihon/j4/)
112
+
113
+
114
+
111
115
  使ったことのない気になった内容でしたので検索してみました。
112
116
 
113
117
 

4

解決策の追加

2018/08/16 08:44

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -1,3 +1,109 @@
1
+ 解決になるか分かりませんが自分なりにコピーするならこれが今のところ最適かなと思います。
2
+
3
+
4
+
5
+ ```java
6
+
7
+ public static void main(String[] args) {
8
+
9
+ Sample[] array1 = {
10
+
11
+ new Sample(10),
12
+
13
+ new Sample(20),
14
+
15
+ new Sample(30)
16
+
17
+ };
18
+
19
+
20
+
21
+ Sample[] array2 = new Sample[array1.length];
22
+
23
+
24
+
25
+ for(int i = 0; i < array1.length; i ++) {
26
+
27
+ array2[i] = new Sample(array1[i].num);
28
+
29
+ }
30
+
31
+
32
+
33
+ array2[1].num = 99;
34
+
35
+
36
+
37
+ System.out.println("array1[0] "+ array1[0].num); // 10
38
+
39
+ System.out.println("array1[1] "+ array1[1].num); // 20 元のまま
40
+
41
+ System.out.println("array1[2] "+ array1[2].num); // 30
42
+
43
+
44
+
45
+ System.out.println();
46
+
47
+
48
+
49
+ System.out.println("array2[0] "+ array2[0].num); // 10
50
+
51
+ System.out.println("array2[1] "+ array2[1].num); // 99 ここだけ変更
52
+
53
+ System.out.println("array2[2] "+ array2[2].num); // 30
54
+
55
+
56
+
57
+ }
58
+
59
+ ```
60
+
61
+ ```java
62
+
63
+ public class Sample {
64
+
65
+
66
+
67
+ public int num;
68
+
69
+
70
+
71
+ Sample(int num) {
72
+
73
+ this.num = num;
74
+
75
+ }
76
+
77
+
78
+
79
+ }
80
+
81
+ ```
82
+
83
+ 出力結果
84
+
85
+ ---
86
+
87
+ array1[0] 10
88
+
89
+ array1[1] 20
90
+
91
+ array1[2] 30
92
+
93
+
94
+
95
+ array2[0] 10
96
+
97
+ array2[1] 99
98
+
99
+ array2[2] 30
100
+
101
+
102
+
103
+ ---
104
+
105
+
106
+
1
107
  [【初心者が注意したい】Java配列コピーの方法まとめ](https://eng-entrance.com/java-array-copy)
2
108
 
3
109
 

3

画像位置の移動

2018/08/16 08:38

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -1,8 +1,4 @@
1
1
  [【初心者が注意したい】Java配列コピーの方法まとめ](https://eng-entrance.com/java-array-copy)
2
-
3
-
4
-
5
- ![イメージ説明](220658cb8cd7b1ec448b15bd499ae630.png)
6
2
 
7
3
 
8
4
 
@@ -40,6 +36,8 @@
40
36
 
41
37
  別途イテレーションなどを使ってコピーし直す必要がありそうです。
42
38
 
39
+ ![イメージ説明](220658cb8cd7b1ec448b15bd499ae630.png)
40
+
43
41
  [ シャローコピーとディープコピー](http://d.hatena.ne.jp/ariteku/20110602/1307031712)
44
42
 
45
43
 

2

追記

2018/08/16 07:17

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -1,4 +1,8 @@
1
1
  [【初心者が注意したい】Java配列コピーの方法まとめ](https://eng-entrance.com/java-array-copy)
2
+
3
+
4
+
5
+ ![イメージ説明](220658cb8cd7b1ec448b15bd499ae630.png)
2
6
 
3
7
 
4
8
 
@@ -26,7 +30,21 @@
26
30
 
27
31
 
28
32
 
33
+ ---
29
34
 
35
+ 追記:
36
+
37
+ 逆説的に実体がコピーされていないということはオブジェクト参照されている。
38
+
39
+ オブジェクト参照されているのでこの方法のままではコピー出来そうに無い。
40
+
41
+ 別途イテレーションなどを使ってコピーし直す必要がありそうです。
42
+
43
+ [ シャローコピーとディープコピー](http://d.hatena.ne.jp/ariteku/20110602/1307031712)
44
+
45
+
46
+
47
+ ---
30
48
 
31
49
  ↓リンク先の説明画像です
32
50
 

1

誤字修正

2018/08/16 07:15

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- 記事の中でのサンプルコードでは`Int[]`でディープコピーの実演をされていました。
13
+ 記事の中でのサンプルコードでは`int[]`でディープコピーの実演をされていました。
14
14
 
15
15
 
16
16
 
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- まずはリンク先のように`Int[]`でお試ししてみてはどうでしょうか?
21
+ まずはリンク先のように`int[]`でお試ししてみてはどうでしょうか?
22
22
 
23
23
 
24
24