1

这可能是一个愚蠢的问题。

当我尝试构建一些方法时,例如“有效地从八进制到十进制”,我被提醒有文字可以完成这项工作。这将是系统方式中最快的、按位的、内置的。

对于八进制,前缀为“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

2 回答 2

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、....

于 2013-07-22T11:35:59.743 回答
0

文字只方便您在源代码中编写十进制、十六进制、八进制等。它们仍然在编译时转换为原语。

对于转换,您需要一些字符串实用程序,例如String.format().

于 2013-07-22T11:38:49.310 回答