2014-08-31 79 views
-1
public class Test { 

    public static void main(String[] args) { 

      Integer obj1 = Integer.valueOf(12); 
      Integer obj2 = Integer.valueOf("12"); 

      System.out.println(obj1.intValue() + " " + obj2.intValue()); 

      Integer obj3 = Integer.valueOf("1010", 2); 
      Integer obj4 = Integer.valueOf(1010, 2);//Compile time error. 
     } 

} 

//作爲valueOf()方法需要兩個字符串和repective類型作爲參數,但爲什麼不 最後的陳述表明編譯,我想使用valueOf()方法與基數時錯誤。包裝器在Java中

+0

你想讓'Integer.valueOf(1010,2)'做甚麼? 1010已經是一個數字,所以不能用某個基數進行分析。它的二進制表示是'「1111110010」'。只有字符串可以被解析。 – 2014-08-31 10:55:55

+1

@Erwin,那麼爲什麼字符串s = Integer.toString(10,2);在這裏工作的同時也是一個數字。 – Aamir 2014-08-31 11:02:52

+0

由於'Integer.toString'不會解析字符串,它會將數字*轉換爲字符串。它是'Integer.valueOf'的* * *。所以雖然有一個'Integer.toString(10,2)',沒有'Integer.toString(「10」,2)'。 – 2014-08-31 14:12:10

回答

1

雖然一個很好的問題,我不知道爲什麼你的問題是downvoted,可能是因爲您的評論不是由他們大多見過!

第一部分確實是正確的,由Jeroen Vannevel回答,在java-library中沒有可用的Integer.valueOf()重載版本!

java.lang.Integer.valueOf(String s, int radix)方法返回一個Integer對象,該對象保存從第二個參數radix給出的基數解析時從指定的String中提取的值。所以,這裏String被分析成Integer對象!

另一方面,你正在談論Integer.valueOf(1010, 2)數字1010已經是一個整數,所以它不能再被解析回Integer!另外,如果你想BinaryString ---只需使用java.lang.Integer.toBinaryString()。爲了您的滿意,如果你還在想着解析,然後在下面進行: -

的解決方案來結束你的疑問是

你將如何再次轉換成Integer.valueOf(1010,16)整數 對象????它將包含字符串(十六進制表示3F2 ---見這裏)!!! 我希望你有理由! 因此,這不是在java庫中提供的。

+0

感謝您清除我的疑問。 – Aamir 2014-08-31 11:59:07