2015-06-22 66 views
4

這裏是數據類型在Java一些代碼:Java中的數字文字 - 八進制?

class Test 
{ 
    public static void main(String args[]) 
    { 
     int i = -0777; 
     System.out.println(i); 
    } 
} 

上述代碼的輸出-511

如果代碼被改變爲:

class Test 
{ 
    public static void main(String args[]) 
    { 
     int i = -777; 
     System.out.println(i); 
    } 
} 

輸出是-777 。

爲什麼輸出不同?這個代碼背後做了什麼計算?

+0

我會upvote這個問題,但標題是太普遍和不確定。 – SamTebbs33

+0

這個問題與數據類型無關。這是關於數字文字。 – EJP

回答

8

-0777被編譯器視爲十進制數(基數爲8),其十進制值爲-511( - (64 * 7 + 8 * 7 + 7))。 -777是一個十進制數。

+0

如果我通過STDIN輸入「-077」,會發生什麼情況? – Rishav

+1

@RishavKundu「-077」是一個字符串。有很多方法可以解釋/解析它。 – Kayaman

+0

@RishavKundu這將取決於你如何從STDIN中讀取它。例如 - 'Scanner sc = new Scanner(System.in); System.out.println(sc.nextInt());'如果您輸入-077,將打印-77。 – Eran