9

そこで、数日前に Java の学習を開始し、質問を受けました。次の式について:

String foo=123;

許可されていません。ただし、 ではSystem.out.printIn()、次のようなものを使用できます。

int x=5;
System.out.println(x);

文字列に暗黙的に整数を代入することは許可されていないのに、なぜ上記の式が機能するのでしょうか? 誰でも詳細な説明をすることができますか?また、この種の暗黙的なものをいつ使用でき、いつ使用できないのかも疑問に思っています。

4

5 に答える 5

14

整数で println を呼び出すことができる理由は、メソッドがオーバーロードされているためです。基本的に、println と呼ばれるメソッドが複数あり、そのうちの 1 つは整数を受け入れます。

ここを見てください: PrintStream

于 2012-05-24T22:31:19.937 に答える
12

PrintStream には非常に多くのオーバーロードされたメソッドがありますSystem.out

println(boolean x)
println(char x)
println(int x)
println(long x)
println(float x)
println(double x)
println(char x[])
println(String x)
println(Object x)
于 2012-05-24T22:30:19.093 に答える
3

outクラスの静的メンバーSystemPrintStream、シグネチャを持つメソッドを持つprintln(int)です。

于 2012-05-24T22:30:32.353 に答える
3

PrintStream( System.outis a )の API を見てくださいPrintStreamprintln()println(boolean)println(char)println(char[])、println(double)println(float)println(int)、およびのメソッドがprintln(long)あります。これは、メソッドのオーバーロードと呼ばれます (下にスクロールして、メソッドのオーバーロードに関するセクションを見つけてください)。println(Object)println(String)

String整数リテラルからを作成する場合は、引用符で囲む ( ) か、 ( ) または( )String s = "123";を使用できます。Integer.toStringString s = Integer.toString(123);String.valueOfString s = String.valueOf(123);

于 2012-05-24T22:34:21.967 に答える
1

println ではなく printin を意味しないと仮定すると、Javaには各データ型の println 関数があるため、ブール値、int、文字列などで println を呼び出すことができ、適切な関数が選択されます。もちろん、文字列変数には型が異なるため、整数を割り当てることはできません。

于 2012-05-24T22:37:19.560 に答える