当前位置: 首页 > 面试题库 >

为什么不是(123 == 0123)在Java中?

程亦
2023-03-14
问题内容

我正在使用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
}

问题答案:

0123是一个八进制数字(前导0),123而是一个十进制数字。

所以0123实际上等于83



 类似资料:
  • 问题内容: 我知道整数在Java中是不可变的。但是为什么要这样设计呢? 我找不到强制Integer不可变的用例。是否有类似String的技术原因? 字符串在网络连接,数据库URL等中用作参数。如果它是可变的,则很容易遭到破坏。 支持StringPool功能。 支持使用字符串作为参数的类加载机制。字符串可变会导致加载错误的类。 我知道有些包装很易变。 更新: 从对话中,并没有普遍的理由要求整数是不可

  • 问题内容: 有人问我为什么String是不可变的 我这样回答: 当我们在Java中像这样创建一个字符串时,;将在字符串pool(hello)中创建一个对象,并且s1将指向hello。现在再次执行该操作;将不会创建另一个对象,但是s2将指向该对象,hello 因为JVM将首先检查如果在字符串池中是否存在相同的对象, 如果不存在则仅创建一个新对象。 现在,如果假设Java允许串可变那么如果我们改变S1

  • 问题内容: 以下代码抛出: 因为它是静态的,所以我的编译器是否调用null?那没有任何意义! 发生了什么? 问题答案: 这里有两个问题在起作用: 不按照你的想法去做 在这种情况下返回 从到的分配会导致自动取消装箱 由于是被抛出 要解析,你可以使用例如。

  • 问题内容: 在Java类和对象中,我们使用“ this”关键字来引用类中的当前对象。从某种意义上说,我相信“ this”实际上返回了自身的对象。 例如: 在超类和子类的情况下。我以为“ super”关键字将返回超类的对象。但是似乎这次我弄错了: 例: 我的问题: 在上面的示例中,我期望编译器可以打印出来,但是它可以打印出来。为什么会这样呢?什么超级真正返回? 问题答案: 使用的方法调用只会忽略当前

  • 问题内容: 在Java中,外部类可以是public,final,default或abstract。为什么不像静态 问题答案: 外部类已经是隐式静态的。 非静态嵌套类(=内部类)意味着内部类隐式对其父类具有引用。 这就是为什么对于嵌套类,您可以区分静态和非静态。对于外部类来说,这是没有意义的。 这是一个了解静态/非静态嵌套类之间的区别的示例。您应该了解为什么在外部类中它没有意义。