回答編集履歴

2

コメントに対する回答を追記

2020/03/11 06:59

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -43,3 +43,63 @@
43
43
  上のコードの s = new String(a); は
44
44
 
45
45
  s = String.valueOf(a); と書くこともできます。
46
+
47
+
48
+
49
+ **追記2**
50
+
51
+
52
+
53
+ > "String の toCharArray と charAt"は、Stringをcharに型変換するために出てきたもので、最初のほうが出力前にさらに型変換されたもので、追記のほうがcharのまま出力したのでしょうか。
54
+
55
+
56
+
57
+ toCharArray は、String から char配列を作り出してそれを返すメソッド。
58
+
59
+ charAt(i) は、String の中の i番目の char を返すものメソッド
60
+
61
+ new String(a) は、コンストラクタにより char配列 a から、Stringオブジェクトを作りだしています。
62
+
63
+ String.valueOf(a) は、内部で new String(a) を実行してそれを返しているはずです。
64
+
65
+
66
+
67
+ > for文のところはString型とchar型の両方を同時にあつかっているから複雑になっているのだ予想しますが、"a[j++] = s.charAt(--i)"という部分がなぜその位置にあるのか、なぜ波括弧とその中の実行文がないのか、なぜ()の中の変化式がないのかは、現時点での知識ではわかりません。
68
+
69
+
70
+
71
+ 文が一つの場合は { } は省略できる、というか、本当は、for文の (;;) のあとには
72
+
73
+ 文が一つしか書けないので、{ } によって複数の文をまとめて一つの文にしていると
74
+
75
+ いうことです。
76
+
77
+ この for文は次のように書いても同じです。
78
+
79
+ ```Java
80
+
81
+ for (int i = s.length(), j = 0; i > 0; ) {
82
+
83
+ i--;
84
+
85
+ a[j] = s.charAt(i);
86
+
87
+ j++
88
+
89
+ }
90
+
91
+ あるいは
92
+
93
+ for (int i = s.length(), j = 0; i-- > 0; j++) {
94
+
95
+ a[j] = s.charAt(i);
96
+
97
+ }
98
+
99
+ さらに
100
+
101
+ for (int i = s.length(), j = 0; --i >= 0; j++)
102
+
103
+ a[j] = s.charAt(i);
104
+
105
+ ```

1

String の valueOf を使う方法を追加

2020/03/11 06:59

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -33,3 +33,13 @@
33
33
  ・String の toCharArray と charAt
34
34
 
35
35
  どれが気に入りましたか?
36
+
37
+
38
+
39
+ **追記**
40
+
41
+ 同じことをするのに、いくつものやり方があります。
42
+
43
+ 上のコードの s = new String(a); は
44
+
45
+ s = String.valueOf(a); と書くこともできます。