2012-05-05 36 views
23

Tôi đang phát triển một ứng dụng trong Android bằng Eclipse. Tôi đã viết mã sau đây và trong các thử nghiệm đầu tiên và thứ ba "nếu" không thể truy cập được. Tại sao?tại sao không phải là (123 == 0123) trong java?

Khi tôi thêm số 0 đứng đầu vào một số, toán tử bằng trả về false.

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

Trả lời

55

0123 là một số bát phân (leading 0), trong khi 123 là một số thập phân.

đểthực sự tương đương với 83.

+0

làm thế nào tôi có thể thiết lập nó như là số thập phân? – breceivemail

+27

xóa 0 hàng đầu – MByD

21

bất kỳ số nguyên hàng đầu Với Zero là bát phân số (cơ sở 8).

0123 là Số bát phân và 123 là Decimal Số

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

vìtrong không thập phân chữ số bát phân (cơ sở 8) vì vậy đây là tương đương với 83

Để chuyển đổi một số k để thập phân, sử dụng công thức xác định đại diện cơ sở-8 của nó:

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 

Một số bát phân bao gồm một ASCII chữ số 0 theo sau là một hoặc nhiều chữ số ASCII từ 0 đến 7 và có thể đại diện cho một tích cực, bằng không, hoặc số nguyên âm.

Lưu ý: giá trị Octal được biểu thị trong java bởi hàng đầu zero số thập phân bình thường không thể có một hàng đầu zero

Các vấn đề liên quan