回答編集履歴
1
若干の文言の修正・追加
test
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
**1.toString について**
|
2
2
|
|
3
|
-
Objectクラスのメソッド。Javaのクラスは全てObjectクラスのサブクラスなので自作のクラス、API等含めすべてのクラスに「toString 」というメソッドが存在する。役割は「そのク
|
3
|
+
Objectクラスのメソッド。Javaのクラスは全てObjectクラスのサブクラスなので自作のクラス、API等含めすべてのクラスに「toString 」というメソッドが存在する。役割は「そのオブジェクトを文字列として表現したモノを返却する」
|
4
4
|
|
5
|
-
※"全てのクラスに文字列化するための共通メソッドが存在する"というのは大変便利なものでたとえばよくつかうSystem.out.printlnとか
|
5
|
+
※"全てのクラスに文字列化するための共通メソッドが存在する"というのは大変便利なものでたとえばよくつかうSystem.out.printlnとかを自分で実装することを考えると
|
6
6
|
|
7
7
|
```Java
|
8
8
|
|
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
```
|
42
42
|
|
43
|
-
で済みます。
|
43
|
+
で済みます。ポルモーフィズムです。
|
44
44
|
|
45
45
|
**2.toStringのオーバーライド**
|
46
46
|
|
@@ -62,13 +62,15 @@
|
|
62
62
|
|
63
63
|
list.add("A2");
|
64
64
|
|
65
|
-
System.out.println(list.toString());//[A1, A2] が出力
|
65
|
+
System.out.println(list.toString());//[A1, A2] が出力->中身をわかりやすく表示する実装になっている
|
66
66
|
|
67
67
|
//toStringがオーバーライドされていないクラス 例.SimpleDateFormat
|
68
68
|
|
69
69
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd"); System.out.println(sdf.toString());//java.text.SimpleDateFormat@fbb536c0 が出力
|
70
70
|
|
71
71
|
```
|
72
|
+
|
73
|
+
なぜObjectクラスのデフォルトtoStringメソッドがこんなに不親切かというと"そのオブジェクトを文字列として(適切に)表現"する方法が汎用的な処理では難しいから(PHPのvar_dumpとかイメージしてるとありゃ、という感じです)。
|
72
74
|
|
73
75
|
でStringBuilderというクラスはどちらかというと、(2)のtoStringをオーバーライドしているクラスになる。例えばStringBuilderで文字列を連結した場合連結した文字列が出力結果になる
|
74
76
|
|