2012-05-24 28 views
7

所以我幾天前開始學習java,並得到了一個問題。對於下一個表達式:System.out.printIn()如何接受整數?

String foo=123; 

是不允許的。然而,在System.out.printIn(),我們可以使用類似:

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

由於隱含分配一個整數的字符串是不允許的,爲什麼上面的作品表達?任何人都可以給出詳細的解釋?我也想知道我們什麼時候可以使用這種隱含的東西,什麼時候我們不能。

+1

請閱讀此:http://meta.stackexchange.com/questions/5234/ –

回答

9

有所述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) 
+0

什麼是(對象x)?任何種類的對象的模板? – OneZero

+1

@ user1229490它將使用傳遞給它的任何東西的Object.toString()方法。 – Jivings

3

靜態成員的類的SystemoutPrintStream具有與簽名println(int)的方法。

13

您可以使用整數調用println的原因是因爲該方法被重載。基本上有多個稱爲println的方法,其中一個方法接受一個整數。

到這裏看看:PrintStream

+0

爲什麼選擇JDK 1.4.2作爲參考?我們已經在JDK 7和8即將發佈。也許對JDK 6或7的引用會更好。 –

+1

@edalorzo你說得對。我已經更新了答案。 – MAV

3

看那API爲PrintStreamSystem.outPrintStream)。它有方法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.toStringString s = Integer.toString(123);)或String.valueOfString s = String.valueOf(123);)。

1

我假設你的意思是不打印,java爲每種數據類型都有一個println函數,所以你可以在布爾值,整數,字符串等等上調用println函數,它會選擇正確的函數。 當然,你不能將一個整數賦值給一個字符串變量,因爲它們是不同的類型。