为什么java中没有(123==0123)?

为什么java中没有(123==0123)?,java,integer,operators,equality-operator,Java,Integer,Operators,Equality Operator,我正在使用Eclipse在Android中开发一个应用程序。我编写了以下代码,在测试中,第一个和第三个“if”块无法访问。为什么? 将前导零添加到数字时,equal运算符返回false int var = 123; if (var == 0123) { //not reachable } if (var == 123) { //reachable } if (var == (int)0123) { //not reachable } if (var == (int)123

我正在使用Eclipse在Android中开发一个应用程序。我编写了以下代码,在测试中,第一个和第三个“if”块无法访问。为什么?

将前导零添加到数字时,equal运算符返回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
是一个八进制数(),而
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转换为十进制,请使用定义其以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中由前导零表示正常十进制数不能有前导零

如何将其设置为十进制数?