2012-05-05 15 views
23

Zajmuję się tworzeniem aplikacji w systemie Android przy użyciu Eclipse. Napisałem poniższy kod iw testach pierwszy i trzeci blok "if" jest niedostępny. Czemu?dlaczego nie jest (123 == 0123) w java?

Po dodaniu początkowego zera do liczby operator równości zwraca wartość false.

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

Odpowiedz

55

0123 jest ósemkową numer (leading 0), natomiast 123 jest liczbą dziesiętną.

więcfaktycznie równa 83.

+0

jak mogę ustawić go jako liczbę dziesiętną? – breceivemail

+27

usuń wiodące 0 – MByD

21

Dowolna liczba całkowita Prowadząca z zerowym jest liczba ósemkowa (podstawa 8).

0123 jest ósemkowa liczba i 123 jest Liczba dziesiętna

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

ponieważw nie cyfry po przecinku jego ósemkowa (podstawa 8) więc jest równa 83

Aby przekonwertować numer k do dziesiętnego, użyj wzoru, który definiuje jego reprezentację base-8:

enter image description here

base-8 = 83 decimal 

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

ósemkową liczbowy składa się z cyfrą ASCII 0, a następnie przez jeden lub więcej znaków ASCII 0 do 7 oraz może stanowić korzystny jest zero lub dodatnią liczbę całkowitą.

Uwaga: wartości ósemkowe są oznaczone w Java od zera normalną liczbę dziesiętną nie może mieć zerem

Powiązane problemy