Java中的整数前导零问题

Java中的整数前导零问题,java,Java,我编写了一个非常简单的Java程序: class test { public static void main (String args[]) { int i = 23; int j = i/10; System.out.println ("Value of i: " +i); System.out.println ("Value of j: " +j); } } 输出与预期一样-

我编写了一个非常简单的Java程序:

class test {
    public static void main (String args[])
    {  
        int i = 23;    
        int j = i/10;   
        System.out.println ("Value of i: " +i);
        System.out.println ("Value of j: " +j);
    }    
}
输出与预期一样-
i=23
j=2

现在,我在程序中不断更改
I
的值。输出开始改变

i=02
的值,输出变为-
i=2
j=0

i=023
的值,输出变为-
i=19
j=1


现在我很困惑。当我在程序中给出
I=023
的值时,我希望在输出中得到
I=23
j=2
。但是为什么
i
变成
19

023被视为八进制。以8为基数的023是以十进制为基数的19。

在Java数字中,以0处理的八进制数字开始,即以8为基数

 class Octal{
   public static void main(String[] args){
     int six=06;      //Equal to decimal 6
     int seven=07;    //Equal to decimal 7
     int eight=010;   //Equal to decimal 8
     int nine=011;    //Equal to decimal 9
     System.out.println("Octal 010 :"+eight);
   }
 }
输出为:
八进制010:8

当你在一个数字(023)前加一个零时,你实际上是在把它转换成八进制。在这里,您试图以十进制形式查看输出。所以你得到的是输入八进制的十进制等价物