Java中的数字字面量 - 八进制?

4

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

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


我本想点赞这个问题,但标题太过笼统和不具体。 - SamTebbs33
这个问题与数据类型无关,它是关于数字字面量的。 - user207421
1个回答

8

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


如果我通过STDIN输入“-077”会发生什么? - xrisk
1
"@RishavKundu" “-077”是一个字符串。你可以有很多种方式来解释/解析它。 - Kayaman
@RishavKundu 这将取决于您如何从STDIN读取它。例如 - Scanner sc = new Scanner (System.in); System.out.println (sc.nextInt ()); 如果您键入-077,则会打印-77。 - Eran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接