【问题标题】:why is this array to 2d array boolean true?为什么这个数组到二维数组布尔值是真的?
【发布时间】:2014-03-08 23:37:06
【问题描述】:

您好,我碰巧遇到了朋友发给我的代码,但在打印打印语句的第二部分时遇到了麻烦。a[3] 是 4,位于第 0 行第 2 列 (b[0][2]) ,但是为什么a[2] 是53,证明b[2][1] == 43 是真的? (顺便说一句,代码打印出 'true true'。)

class Ex1{
     public static void main(String[] args) {

         int a[] = { 1,2,053,4};
         int b[][] = { {1,2,4} , {2,2,1},{0,43,2}};

         System.out.print(a[3]==b[0][2] );
         System.out.print(" " + (a[2]==b[2][1]));
  }
}

【问题讨论】:

    标签: java arrays syntax boolean


    【解决方案1】:

    这是因为053 是一个八进制数,等于十进制的43

    0 前缀表示 Java 和其他一些语言(Perl、Ruby、C 及其衍生语言、Javascript 等等)中的八进制值。

    【讨论】:

    • 哦.. 所以它就像二进制/十六进制的东西。谢谢,现在我很清楚了:)
    【解决方案2】:

    0 开头的数字在Java 中是八进制。

    在您的情况下,43 十进制等于 053 八进制。

    【讨论】:

      【解决方案3】:

      在 Java 和其他几种语言中,以 0 开头的整数文字被解释为八进制 (base 8) 数量。这里053是一个八进制数,即base 1043的值。

      JLS

      八进制数字由 ASCII 数字 0 后跟一个或多个 ASCII 数字 0 到 7 之间穿插下划线,并且可以 表示正整数、零整数或负整数。

      【讨论】:

        【解决方案4】:

        在 Java 中,八进制数以 0 开头。所以八进制 53 等于十进制 43。

        【讨论】:

          猜你喜欢
          • 2017-03-22
          • 2015-04-17
          • 1970-01-01
          • 2021-06-03
          • 2021-02-04
          • 1970-01-01
          • 2016-12-08
          • 2022-01-23
          • 1970-01-01
          相关资源
          最近更新 更多