所以我幾天前開始學習java,並得到了一個問題。對於下一個表達式:System.out.printIn()如何接受整數?
String foo=123;
是不允許的。然而,在System.out.printIn()
,我們可以使用類似:
int x=5;
System.out.println(x);
由於隱含分配一個整數的字符串是不允許的,爲什麼上面的作品表達?任何人都可以給出詳細的解釋?我也想知道我們什麼時候可以使用這種隱含的東西,什麼時候我們不能。
所以我幾天前開始學習java,並得到了一個問題。對於下一個表達式:System.out.printIn()如何接受整數?
String foo=123;
是不允許的。然而,在System.out.printIn()
,我們可以使用類似:
int x=5;
System.out.println(x);
由於隱含分配一個整數的字符串是不允許的,爲什麼上面的作品表達?任何人都可以給出詳細的解釋?我也想知道我們什麼時候可以使用這種隱含的東西,什麼時候我們不能。
有所述PrintStreamSystem.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)
靜態成員的類的System
out
是PrintStream
具有與簽名println(int)
的方法。
您可以使用整數調用println的原因是因爲該方法被重載。基本上有多個稱爲println的方法,其中一個方法接受一個整數。
到這裏看看:PrintStream
爲什麼選擇JDK 1.4.2作爲參考?我們已經在JDK 7和8即將發佈。也許對JDK 6或7的引用會更好。 –
@edalorzo你說得對。我已經更新了答案。 – MAV
看那API爲PrintStream
(System.out
是PrintStream
)。它有方法println()
,println(boolean)
,println(char)
,println(char[]
),println(double)
,println(float)
,println(int)
,println(long)
,println(Object)
和println(String)
。這稱爲method overloading(向下滾動查找方法重載部分)。
如果你想從字面整數創建String
,你可以把引號圍繞它(String s = "123";
),或使用Integer.toString
(String s = Integer.toString(123);
)或String.valueOf
(String s = String.valueOf(123);
)。
我假設你的意思是不打印,java爲每種數據類型都有一個println函數,所以你可以在布爾值,整數,字符串等等上調用println函數,它會選擇正確的函數。 當然,你不能將一個整數賦值給一個字符串變量,因爲它們是不同的類型。
請閱讀此:http://meta.stackexchange.com/questions/5234/ –