在java中,使用零作为最高有效数字,它将数字解释为八进制数。所以01234
被转换为:
4 + 3 x 8 + 2 x 8^(2) + 1 x 8^(3) = 668
因此,最好使用其他答案中的一种转换为字符串的方法。
编辑:这是一个没有 StringBuffer 等的版本:
public String getReversed(int number) {
char[] digitArray = String.valueOf(number).toCharArray();
String strNum = "";
for (int i = digitArray.length - 1; i >= 0; i--) {
strNum += digitArray[i];
}
return strNum;
}
第二次编辑:反转char
数组,然后创建String
完成反转后的数组,因为可能会创建许多O(n^2)
操作,这对垃圾收集器来说可能是个问题。
public String getReversed(int number) {
char[] digitArray = String.valueOf(number).toCharArray();
char[] reversedDigitArray = new char[digitArray.length];
for (int i = 0; i < digitArray.length; i++) {
reversedDigitArray[i] = digitArray[digitArray.length - i - 1];
}
return new String(reversedDigitArray);
}
第三次编辑:用就地算法交换字符。
public static String getReversed(int number) {
char[] digitArray = String.valueOf(number).toCharArray();
int count = digitArray.length - 1;
char tmp;
for (int i = (count-1) >> 1; i >= 0; --i) {
tmp = digitArray[i];
digitArray[i] = digitArray[count - i];
digitArray[count - i] = tmp;
}
return new String(digitArray);
}