回答編集履歴

4

追加

2020/07/30 10:03

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -9,3 +9,35 @@
9
9
  それによって動作を変えたい場合は、
10
10
 
11
11
  `if(res.equals(mozi))`といった風にしてください。
12
+
13
+
14
+
15
+
16
+
17
+ `if(res == mozi)`の比較について。
18
+
19
+ JAVAのString型をはじめとしたオブジェクト型の変数は、参照型というタイプの変数になっています。
20
+
21
+ 参照型の変数は、直接その中にデータを保存しているのではなく、データは別の場所にインスタンスとして保存され、その場所を参照するための数値(参照値)だけを記録しています。
22
+
23
+ その為、`res == mozi`と書いた場合、
24
+
25
+ res変数が参照している文字列オブジェクトのインスタンスの場所と、
26
+
27
+ moji変数が参照している文字列オブジェクトのインスタンスの場所と、
28
+
29
+ という二つの場所の値での比較となります。
30
+
31
+ たとえ内容が同じであっても、それぞれ別のデータとして別の場所に保管されていますので、この二つの比較は`false`となります。
32
+
33
+ (同じデータをまとめて一つにする最適化の結果`true`になることもありますが内容の比較にはなりません)
34
+
35
+ なので、string型の内容を`==`で比較することはできません。
36
+
37
+
38
+
39
+ ただし、今回のように一文字だけの比較であれば、双方ともに、char型にすることで、
40
+
41
+ char型どうしは、`==`で比較が可能です。
42
+
43
+ (char型はプリミティブ型といわれるデータを直接変数に保存するタイプなので)

3

追加

2020/07/30 10:03

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -1,3 +1,11 @@
1
1
  String同士の比較には、equalsメソッドを使います。
2
2
 
3
3
  `res.equals(mozi)`で二つの文字列の内容の比較ができます。
4
+
5
+
6
+
7
+ `res.equals(mozi)`自体が比較になり、戻り値としてその真偽が返されますので、
8
+
9
+ それによって動作を変えたい場合は、
10
+
11
+ `if(res.equals(mozi))`といった風にしてください。

2

修正

2020/07/30 09:45

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -1 +1,3 @@
1
- すみせん書き直しま
1
+ String同士の比較には、equalsメソッドを使います
2
+
3
+ `res.equals(mozi)`で二つの文字列の内容の比較ができます。

1

修正

2020/07/30 09:18

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -1,3 +1 @@
1
- 既にやっているように、あとから入力した文字も、`mozi.charAt(0)`でcharに変換すればよいのでは。
2
-
3
- 入力は一文字固定っぽいので、2文字以上の時点で外れか、それ以降の入力は無視るとて。
1
+ みません書き直ます