teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

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

2020/03/11 06:59

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -20,4 +20,34 @@
20
20
  **追記**
21
21
  同じことをするのに、いくつものやり方があります。
22
22
  上のコードの s = new String(a); は
23
- s = String.valueOf(a); と書くこともできます。
23
+ s = String.valueOf(a); と書くこともできます。
24
+
25
+ **追記2**
26
+
27
+ > "String の toCharArray と charAt"は、Stringをcharに型変換するために出てきたもので、最初のほうが出力前にさらに型変換されたもので、追記のほうがcharのまま出力したのでしょうか。
28
+
29
+ toCharArray は、String から char配列を作り出してそれを返すメソッド。
30
+ charAt(i) は、String の中の i番目の char を返すものメソッド
31
+ new String(a) は、コンストラクタにより char配列 a から、Stringオブジェクトを作りだしています。
32
+ String.valueOf(a) は、内部で new String(a) を実行してそれを返しているはずです。
33
+
34
+ > for文のところはString型とchar型の両方を同時にあつかっているから複雑になっているのだ予想しますが、"a[j++] = s.charAt(--i)"という部分がなぜその位置にあるのか、なぜ波括弧とその中の実行文がないのか、なぜ()の中の変化式がないのかは、現時点での知識ではわかりません。
35
+
36
+ 文が一つの場合は { } は省略できる、というか、本当は、for文の (;;) のあとには
37
+ 文が一つしか書けないので、{ } によって複数の文をまとめて一つの文にしていると
38
+ いうことです。
39
+ この for文は次のように書いても同じです。
40
+ ```Java
41
+ for (int i = s.length(), j = 0; i > 0; ) {
42
+ i--;
43
+ a[j] = s.charAt(i);
44
+ j++
45
+ }
46
+ あるいは
47
+ for (int i = s.length(), j = 0; i-- > 0; j++) {
48
+ a[j] = s.charAt(i);
49
+ }
50
+ さらに
51
+ for (int i = s.length(), j = 0; --i >= 0; j++)
52
+ a[j] = s.charAt(i);
53
+ ```

1

String の valueOf を使う方法を追加

2020/03/11 06:59

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -15,4 +15,9 @@
15
15
  ・String の subString と +=
16
16
  ・String の charAt と +
17
17
  ・String の toCharArray と charAt
18
- どれが気に入りましたか?
18
+ どれが気に入りましたか?
19
+
20
+ **追記**
21
+ 同じことをするのに、いくつものやり方があります。
22
+ 上のコードの s = new String(a); は
23
+ s = String.valueOf(a); と書くこともできます。