为什么java中没有(123 == 0123)?
我正在使用Eclipse在Android中开发应用程序。 我编写了以下代码,在测试中第一个和第三个“ 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 }
0123
是八进制数( 前导0 ),而123
是十进制数。
所以0123实际上等于83。
任何以零为首的整数都是八进制数(基数为8)。
0123
是八进制数, 123
是十进制数
0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4) =3+16+64+0 =83
因为0123不是十进制数字的八进制数(基数为8)所以这等于83
要将数字k转换为十进制,请使用定义其base-8表示的公式:
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表示,前导零正常十进制数不能有前导零