Вопрос по java – почему нет (123 == 0123) в Java?

23

Я разрабатываю приложение в Android с использованием Eclipse. Я написал следующий код и в тестах первый и третий & quot;if& Quot; блок недоступен Зачем?

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

<code>int var = 123;
if (var == 0123) {
    //not reachable
}
if (var == 123) {
    //reachable
}
if (var == (int)0123) {
    //not reachable
}
if (var == (int)123) {
    //reachable
}
</code>

Ваш Ответ

3   ответа
9

так что это равно 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   

An octal numeral consists of an ASCII digit 0 followed by one or more of the ASCII digits 0 through 7 and can represent a positive, zero, or negative integer.

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

55

0123 является восьмеричным числом (ведущий 0), в то время как123 это десятичное число.

поэтому 0123 на самом деле равен 83.

Error: User Rate Limit Exceeded Bobs
Error: User Rate Limit Exceeded
21

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

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

Похожие вопросы