2015-08-17 64 views
-10
Integer b = Integer.valueOf("444",8); 
System.out.println(b); 

爲什麼B = 292我無法理解這樣的靜態函數Integer.valueOf()靜態函數

b=Integer.valueOf("444",16); 
System.out.println(b) 

爲什麼B = 1092 我感謝你的幫助 謝謝提前

+4

你檢查的'文檔valueOf(String data,int radix)'? – Pshemo

+1

您是否閱讀過[文檔](http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html)?你明白什麼是基數? 444₈和444₁6之間有區別嗎? – RealSkeptic

回答

2

您提供的基數爲八進制和六進制,因此您可以根據提供的基數獲取輸出:

static Integer valueOf(String s, int radix) 

作爲每Java文檔Integer.valueOf

返回整數對象時與由第二 參數給出的基數進行分析保持從 指定String中提取的值。第一個參數被解釋爲表示由第二個參數指定的基數中的帶符號的 整數,就好像 參數被賦予parseInt(java.lang.String,int) 方法。結果是一個Integer對象,它表示字符串指定的整數值 。

1

因爲在基座10 444在基座8 = 292和444在底座16 = 1092在基座10

+0

基數16是您的最後一個值;) – MrT

0

「444」是字符串,16被稱爲基數,有一點需要注意的是,十進制是默認的基數。

現在的基數是參數的在這種情況下它的16進制即本基地需要被轉換爲默認即十進制所以 444(十六進制)到十進制是1092