我已经编写了一些使用字符串来表示时间的代码,比如“0620”,但是经过仔细考虑,我意识到可以将这些字符串解析为短字符串,以比较性能和存储增益。
在一个单元测试中,我有一个简短的写为0620的代码,它与返回值620进行了比较,希望这可以工作。但是,测试0620等于620(均为短路)失败。
错误信息显示0620被中断为400(和400!=620解释故障)。去掉lead 0可以解决问题,但我想知道,这是怎么回事?
这不管用
assertEquals("Time Failed", 0620, st.GetTime());
这作品
assertEquals("Time Failed", 620, st.GetTime());
最佳答案
以0
开头的整型文字根据Java language specification解释为八进制(基数8):
八进制数字由ascii组成
数字0后跟一个或多个
ascii数字0到7和can
表示正、零或
负整数。
我相信这是爪哇从C.继承的怪癖之一。