2014-02-11 122 views
3

嗨我碰巧遇到了我的朋友發給我的代碼,並且無法完成打印聲明的第二部分。a[3]是4,它在第0行第2列(b[0][2])中,但爲什麼是a[2]這是53,證明爲真b[2][1] == 43 ??? (該代碼打印「真真」順便說一句。)爲什麼這個數組是2d數組布爾值true?

class Ex1{ 
    public static void main(String[] args) { 

     int a[] = { 1,2,053,4}; 
     int b[][] = { {1,2,4} , {2,2,1},{0,43,2}}; 

     System.out.print(a[3]==b[0][2]); 
     System.out.print(" " + (a[2]==b[2][1])); 
    } 
} 

回答

12

這是因爲053是一個八進制數等於十進制43

0前綴表示Java和其他一些語言(Perl,Ruby,C和派生的,僅舉幾例的Javascript)中的八進制值。

+0

哦..所以它像二進制/十六進制的東西。現在感謝我很清楚它:) – Leonne

3

0開頭的數字是Java中的八進制數。

而在你的情況下,43十進制等於053八進制。

3

在Java和其他幾種語言中,以0開頭的整數文字被解釋爲八進制(base 8)數量。這裏的053是一個八進制數,它的值爲43,在base 10

JLS

八進制標記由一個ASCII數字0,接着的ASCII數字0到7用下劃線散佈一個或多個 ,並且可以 表示正,零或負的整數。

1

在Java八進制數從0開始,所以八進制53等於十進制43

相關問題