回答編集履歴

1

若干の文言の修正・追加

2017/06/28 01:27

投稿

kurokoba
kurokoba

スコア276

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