【问题标题】:Shorts in Android and JavaAndroid 和 Java 中的短裤
【发布时间】:2011-01-08 21:18:38
【问题描述】:

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

在单元测试中,我有一个简短的写为 0620 与返回值 620 进行比较,希望这可以工作。但是,测试 0620 等于 620(都是短裤)失败。

错误消息显示 0620 被中断为 400(并且 400 != 620 解释了失败)。删除前导 0 解决了问题,但我想知道,这是怎么回事?

这不起作用

assertEquals("Time Failed", 0620, st.GetTime());

这个工程

assertEquals("Time Failed", 620, st.GetTime());

【问题讨论】:

    标签: java android short


    【解决方案1】:

    根据Java language specification,以0 开头的整数文字被解释为八进制(以8 为基数):

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

    我相信这是 Java 继承自 C 的怪癖之一。

    【讨论】:

      【解决方案2】:

      0620 在 java 中表示八进制(base 8) 我猜在 android 中是一样的,或者 0620 == 400 而不是 620

           int decVal = 26;   // The number 26, in decimal
           int octVal = 032;  // The number 26, in octal
           int hexVal = 0x1a; // The number 26, in hexadecimal
      

      example from java tutorials at SUN/Oracle

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 1970-01-01
        • 2012-08-04
        • 1970-01-01
        相关资源
        最近更新 更多