Android和Java中的短裤

Kur*_*rru 2 java android short

我编写了一些使用字符串来表示时间的代码,例如"0620",但经过仔细考虑后,我意识到这些可以解析为短路,以便比较性能和存储增益.

在一个单元测试中,我写了一个简短的0620与一个返回值620进行比较,期望这个工作.但是,测试0620等于620(两者都是短路)失败.

错误消息说0620被中断为400(400!= 620解释失败).删除线索0解决了问题,但我想知道,这是怎么回事?

这不起作用

assertEquals("Time Failed", 0620, st.GetTime());
Run Code Online (Sandbox Code Playgroud)

这个作品

assertEquals("Time Failed", 620, st.GetTime());
Run Code Online (Sandbox Code Playgroud)

Mic*_*rdt 6

根据Java语言规范,以a开头的整数文字0被解释为八进制(基数为8):

八进制数字由ASCII数字0后跟一个或多个ASCII数字0到7组成,并且可以表示正整数,零整数或负整数.

我相信这是Java从C继承的怪癖之一.