为什么0010在java中给出不同的数组结果

时间:2015-04-17 13:51:26

标签: java arrays

如果我在数组输出中的数字值变为不同之前放置了00或0。

 int arr[][]=new int[3][2];
    arr[0][0]=00;
    arr[0][1]=01;
    arr[1][0]=10;
    arr[1][1]=0011;
    arr[2][0]=0020;
    arr[2][1]=21;
    for(int a[]: arr){
        for(int c : a){
            System.out.println(c);
        }

    }

输出是: 0 1 10 9 16 21

3 个答案:

答案 0 :(得分:15)

前导零的数字被视为Octal

您的0011是八进制8 + 1 = 900202 * 8 = 16

请注意,您的0001也会在八进制中进行解释,但它们恰好与十进制对应值相同。

答案 1 :(得分:6)

因为您以base-8( octal )格式插入数字(在开头使用0)并使用base-10打印它们( 十进制)使用Integer.toString(i, 10);

println()将所有整数转换为base-10并打印出来。

答案 2 :(得分:5)

有一个文字前缀0,表示八进制数

int decimal = 100; // 100 represented in decimal base int octal = 0144; // decimal 100 represented in octal base int hex = 0x64; // decimal 100 represented in hexadecimal base int bin = 0b1100100; // decimal 100 represented in binary base