Подтвердить что ты не робот

Почему нет (123 == 0123) в java?

Я разрабатываю приложение на Android с помощью Eclipse. Я написал следующий код, и в тестах первый и третий " if" блок недоступен. Почему?

Когда я добавляю начальный ноль к числу, оператор равенства возвращает false.

int var = 123;
if (var == 0123) {
    //not reachable
}
if (var == 123) {
    //reachable
}
if (var == (int)0123) {
    //not reachable
}
if (var == (int)123) {
    //reachable
}
4b9b3361

Ответ 1

0123 - восьмеричное число (leading 0), а 123 - десятичное число.

поэтому 0123 фактически равно 83.

Ответ 2

Любое целое число Number Leading With Zero - это восьмеричное число (база 8).

0123 - восьмеричное число и 123 - десятичное число

 0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
        =3+16+64+0
        =83   

Ответ 3

потому что 0123 в десятичной цифре его восьмеричный (база 8) так что это равно 83

Чтобы преобразовать число k в десятичный, используйте формулу, которая определяет его представление base-8:

enter image description here

0123 base-8 = 83 decimal

0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
     =3+16+64+0
     =83   

Октальная цифра состоит из цифры ASCII 0, за которой следует одна или несколько цифр ASCII от 0 до 7 и может представлять собой положительное, нулевое или отрицательное целое число.

Примечание: Восьмеричные значения обозначаются в java начальным нулевым нормальным десятичным числом, не могут иметь начальный нуль