为啥这个数组到二维数组布尔值是真的?
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 10
中43
的值。
JLS 说
八进制数字由 ASCII 数字 0 后跟一个或多个 ASCII 数字 0 到 7 之间穿插下划线,并且可以 表示正整数、零整数或负整数。
【讨论】:
【参考方案4】:在 Java 中,八进制数以 0 开头。所以八进制 53 等于十进制 43。
【讨论】:
以上是关于为啥这个数组到二维数组布尔值是真的?的主要内容,如果未能解决你的问题,请参考以下文章