Ответ 1
JLS 3.10.1 описывает четыре способа определения целых чисел.
Integer литерал может быть выражен в десятичной (база 10), шестнадцатеричной (базовая 16), восьмеричной (база 8) или двоичный (база 2).
Октальная цифра состоит из цифры 0, за которой следуют одна или несколько цифр от 0 до 7...
Десятичная цифра представляет собой либо цифру 0, представляющую целое число, либо состоящую из цифры от 1 до 9, а затем одну или несколько цифр от 0 до 9...
В заключение, если ваш целочисленный литерал (т.е. 011
) начинается с 0, тогда java примет его восьмеричную нотацию .
Решение:
Если вы хотите, чтобы ваше целое число удерживало значение 11, тогда не представляйте себе фантазию, просто назначьте 11. В конце концов, нотация ничего не изменит для значения. Я имею в виду, с математической точки зрения, 11 = 011 = 11,0.
int a = 11;
Форматирование имеет значение только при печати (или при преобразовании int
в String
).
String with3digits = String.format("%03d", a);
System.out.println(with3digits);
Форматирование "%03d"
используется для добавления ведущих нулей.
В качестве альтернативы вы можете сделать это в 1 строке, используя метод printf
.
System.out.printf("%03d", a);