【问题标题】:why is not (123 == 0123) in java?为什么Java中没有(123 == 0123)?
【发布时间】:2012-05-14 17:53:27
【问题描述】:

我正在使用 Eclipse 在 Android 中开发一个应用程序。我编写了以下代码,并在测试中无法访问第一个和第三个“if”块。为什么?

当我将前导零添加到数字时,等号运算符返回 false。

int var = 123;
if (var == 0123) {
    //not reachable
}
if (var == 123) {
    //reachable
}
if (var == (int)0123) {
    //not reachable
}
if (var == (int)123) {
    //reachable
}

【问题讨论】:

    标签: java integer operators equality-operator


    【解决方案1】:

    0123 是八进制数 (leading 0),而 123 是十进制数。

    所以 0123 实际上等于 83。

    【讨论】:

    • 如何设置为十进制数?
    【解决方案2】:

    任何以零开头的整数都是八进制数(以 8 为基数)。

    0123 是八进制数,123 是十进制数

     0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
            =3+16+64+0
            =83   
    

    【讨论】:

      【解决方案3】:

      因为 0123 不是十进制数字,而是八进制(以 8 为基数) 所以这等于 83

      要将数字 k 转换为十进制,请使用定义其 base-8 表示的公式:

      0123 base-8 = 83 decimal
      
      0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
           =3+16+64+0
           =83   
      

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

      注意:八进制值在java中用前导零表示,普通十进制数不能有前导零

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-25
        • 2011-05-27
        • 2012-01-10
        • 2012-02-02
        • 1970-01-01
        • 2014-08-04
        相关资源
        最近更新 更多