【问题标题】:Numeric literals in Java - octal? [duplicate]Java中的数字文字 - 八进制? [复制]
【发布时间】:2015-09-07 18:34:57
【问题描述】:

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

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

【问题讨论】:

  • 我会赞成这个问题,但标题过于笼统和不具体。
  • 本题与数据类型无关。它是关于数字文字的。

标签: java literals octal


【解决方案1】:

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

【讨论】:

  • 如果我通过 STDIN 输入“-077”会发生什么?
  • @RishavKundu "-077" 是一个字符串。您可以通过多种方式解释/解析它。
  • @RishavKundu 这将取决于您如何从 STDIN 读取它。例如 - 如果您输入 -077,Scanner sc = new Scanner (System.in); System.out.println (sc.nextInt ()); 将打印 -77。
猜你喜欢
  • 2020-02-10
  • 2011-10-17
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 2018-04-04
相关资源
最近更新 更多