2013-07-22 62 views
1

這可能是一個愚蠢的問題。爲什麼我們需要(HEX | OCT)_to_DEC方法?

當我試圖建立一些方法,如「八進制到十進制有效」,我被提醒說,有文字來完成這項工作。這將是系統內置的最快速,按比例的內置方式。

對於八進制,前綴爲'0'。

對於十六進制,前綴爲'0x'。

裁判:https://en.wikibooks.org/wiki/Java_Programming/Literals

for (int i=10; i<18; i++) 
    System.out.println("Octal: " + (0 prefix i)); 

我當然知道這個詞prefix不起作用。當然,我知道符號是文字。但是如果我們真的可以prefix它,並讓系統做本地轉換。是不是一定是效率最高的

而且,爲什麼不能? (文字是文字,正如JLS所說的那樣,是不可接受的答案。)

回答

4

因爲文字是在編譯時評估的。你想評估運行時間。

在Java中,你可以隨時使用toString方法在任何其他基數,以顯示你的價值比10.在你的情況:

for (int i=10; i<18; i++) 
    System.out.println("Octal: " + Integer.toString(i, 8)); 

輸出:12,13,....

或者,如果你想遍歷八進制數,只是把它們放在那裏:

for (int i=010; i<018; i++) 
    System.out.println("Octal: " + Integer.toString(i, 8)); 

輸出:10,11,....

+0

不錯的答案。所以它可能不是最有效率的?我們可以知道系統如何做到這一點嗎? – midnite

+0

編譯器將讀取字節碼中的'0'和'0x'前綴值和標準化值。這裏沒有涉及效率,它們是文字。 –

+0

'Integer.toString()'或'String.format()'是其他基數的小數。怎麼樣(十六進制)到十進制? – midnite

0

文字只會幫助您在源代碼中編寫十進制,十六進制,八進制等。它們在編譯時仍然被轉換爲原語。

對於轉換,您需要一些字符串工具,如String.format()

相關問題