Java中的数字文字-八进制?

Java中的数字文字-八进制?,java,literals,octal,Java,Literals,Octal,以下是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

以下是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


为什么输出不同???这段代码背后的计算是什么?

-0777
被编译器视为十进制值为-511(-64*7+8*7+7)的八进制数(以8为基数)
-777
是一个十进制数。

我想对这个问题投赞成票,但标题太笼统和不具体。这个问题与数据类型无关。这是关于数字文字。如果我通过标准输入输入“-077”,会发生什么?@RishavKundu“-077”是一个字符串。有许多方法可以解释/解析它。@RishavKundu,这取决于您如何从STDIN中读取它。例如-
Scanner sc=新扫描仪(System.in);System.out.println(sc.nextInt())将打印-77。