为啥这个数组到二维数组布尔值是真的?

Posted

技术标签:

【中文标题】为啥这个数组到二维数组布尔值是真的?【英文标题】: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]));
  

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于为啥这个数组到二维数组布尔值是真的?的主要内容,如果未能解决你的问题,请参考以下文章

为啥js二维数组传给后台接收到的数据变成了字符串

将二维数组保存到 MongoDb 的最佳方法

这个二维数组为啥里面要有大括号呢?为啥风格成4个?难道不是4×4=16个元素吗?

为啥我的程序没有将字符从文件输入到二维数组中?

如何在Java中将二维布尔数组转换为一维字节数组?

如何在二维字符数组中找到相同字符的菱形?