jvm/java/lang/Integer.java

57 lines
1.2 KiB
Java

package java.lang;
import java.lang.DecimalDigits;
public class Integer {
public static int stringSize(int n) {
int sign_digits = 0;
if (n < 0) {
sign_digits = 1;
n = -n;
}
int digits = 1;
int cmp = 10;
for (int i = 0; i < 9; i++) {
if (n < cmp)
return digits + sign_digits;
digits += 1;
cmp *= 10;
}
return 10 + sign_digits;
}
public static String toString(int n) {
int pos = stringSize(n);
byte[] buf = new byte[pos];
buf[0] = (char)'0';
boolean sign = n < 0;
if (sign) {
n = -n;
}
while (n >= 10) {
int div = n / 100;
pos -= 2;
int mod = n - (div * 100);
short digits = DecimalDigits.DIGITS[mod];
buf[pos] = (byte)(digits >> 8);
buf[pos+1] = (byte)(digits);
n = div;
}
if (n != 0) {
pos -= 1;
buf[pos] = (byte)('0' + n);
}
if (sign) {
pos -= 1;
buf[pos] = (byte)('-');
}
return new String(buf);
}
}