2015-06-22 25 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