に文字列を割り当てることができるのだろうか:なぜ私たちは、単純なJavaオブジェクト
Object mystring = "hello";
System.out.println(mystring);
これはhello
を印刷します。しかし、なぜObject
は文字列のように扱われますか?
に文字列を割り当てることができるのだろうか:なぜ私たちは、単純なJavaオブジェクト
Object mystring = "hello";
System.out.println(mystring);
これはhello
を印刷します。しかし、なぜObject
は文字列のように扱われますか?
これはtoString()メソッドです。 Stringクラスで実装されているもの。メソッドは実行時にバインドされます。
Nit:単純に 'Object.toString()'を呼び出すのではなく、まず 'null'をチェックし、その場合は' 'null ''を出力します。それ以外の場合は、 'toString()'を呼び出します。実際に 'Objects.toString(obj)'を呼び出すかどうかはわかりませんが、論理的には同じです。 –
String
IS-A Object
ですので、リファレンスタイプは任意のスーパータイプにすることができます。
たとえば、mystring
をCharSequence
タイプに割り当てることもできます。
PrintStream
(あなたSystem.out
静的フィールド)のprintln
メソッドは、引数としてString
を取り、それを正しく印刷するための過負荷を持っています。
この場合でもPrintStream#println(Object)
のコードはString.valueOf(x)
と表示されます。ここではx
が指定された引数です。
[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();'を実行することができます。 –
'オブジェクトmystring'はオブジェクトではなく参照です。 JavaでObject変数を使用することはできません。 –