2012-10-23 77 views
1

如果我想編寫一個幾乎完全處理基數8數學的程序,是否有辦法改變源代碼或JVM以使用此基數執行所有計算,而無需在每個整數引用上明確更改它?有沒有辦法改變Java代碼的內部基數?

例如,而不是...

private static final int RADIX = 8; 

// ... then, elsewhere ... 

System.out.println(Integer.toString(3 + 7, RADIX)); 

...我只是做...

System.out.println(3 + 7); 

...和它打印的12同樣的結果?是否有一些我可以應用的環境變量或代碼設置?或者這是不可能的?

這可能看起來很神祕,或者是「爲什麼在這個世界上你會想要這樣做」的場景,但是如果你可以想象不得不在不同的基礎下進行大量的非平凡計算,那麼你可以看到如果不得不手動將數字轉換爲合適的基數,將極其繁瑣。

+2

不同基數的*計算*與不同基數的*印刷*之間存在差異。你要哪個? – Mysticial

+2

事實上,不存在用不同的基數進行計算的情況。結果總是一樣的。您唯一需要關心的是閱讀輸入和打印輸出時。 –

+1

@Jeff那麼,你不能真正計算在不同的基數。它內置於硬件中。所以它總是以基數2. – Mysticial

回答

1

不,沒有這樣的功能。

無論您在說什麼基數,數字都是數字,基數僅在轉換爲字符串時出現。如果你必須一直這樣做,那麼創建一些實用工具的實用方法,並且總是調用它們。或者,編寫處理fromString/toString位的類似Integer的類。

public final class OctalInteger extends Number implements Comparable<OctalInteger> { 
    // Basically a copy of Integer.java, but changes the methods dealing with Strings 

} 
1

另外,你爲什麼要這樣做?想象一下,你會在同一個JVM中運行多少條代碼 - 沒有一個編碼庫會期望默認基數突然改變。

您使用常數是正確的選擇。

0

您不能更改默認基數。但是你可以很容易地編寫你自己的printprintln程序,它們將以八進制打印整數。

相關問題