2016-05-03 5 views
0

に文字列を割り当てることができるのだろうか:なぜ私たちは、単純なJavaオブジェクト

Object mystring = "hello"; 
System.out.println(mystring); 

これはhelloを印刷します。しかし、なぜObjectは文字列のように扱われますか?

+1

[Javaドキュメントの文字列](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html)を見ると、 'public final class String はオブジェクトを拡張します。つまり、ObjectはStringの親クラスです。基本的に 'Animal'クラスと' Dog Animal'クラスと同じです。その場合、 'Animal pet = new Dog();'を実行することができます。 –

+0

'オブジェクトmystring'はオブジェクトではなく参照です。 JavaでObject変数を使用することはできません。 –

答えて

3

これはtoString()メソッドです。 Stringクラスで実装されているもの。メソッドは実行時にバインドされます。

+1

Nit:単純に 'Object.toString()'を呼び出すのではなく、まず 'null'をチェックし、その場合は' 'null ''を出力します。それ以外の場合は、 'toString()'を呼び出します。実際に 'Objects.toString(obj)'を呼び出すかどうかはわかりませんが、論理的には同じです。 –

5

String IS-A Objectですので、リファレンスタイプは任意のスーパータイプにすることができます。

たとえば、mystringCharSequenceタイプに割り当てることもできます。

PrintStream(あなたSystem.out静的フィールド)のprintlnメソッドは、引数としてStringを取り、それを正しく印刷するための過負荷を持っています。

この場合でもPrintStream#println(Object)のコードはString.valueOf(x)と表示されます。ここではxが指定された引数です。

関連する問題