java - Java 中的整数类

标签 java class integer

<分区>

我不明白为什么输出不同。
输出仅在 -128 到 127 范围内相同。

public class Check {
    public static void main(String[ ] args) {
        Integer i1=122;
        Integer i2=122;

        if(i1==i2)
            System.out.println("Both are same");
        if(i1.equals(i2))
            System.out.println("Both are meaningful same");
    }
}

输出:
两者是一样的
两者意义相同

public class Check {
    public static void main(String[] args) {
        Integer i1=1000;
        Integer i2=1000;

        if(i1==i2)
            System.out.println("Both are same");
        if(i1.equals(i2))
            System.out.println("Both are meaningful same");
    }
}

输出: 两者意义相同

最佳答案

您在 Java 语言中遇到了一个警告,其中“小”值的自动装箱与自动装箱的规则略有不同。 (在这种情况下,“小”表示 127 到 -128 范围内的数字,如 C 中带符号的 byte。)来自 JLS 5.1.7 Boxing Conversion :

If the value p being boxed is true, false, a byte, a char in the range \u0000 to \u007f, or an int or short number between -128 and 127, then let r1 and r2 be the results of any two boxing conversions of p. It is always the case that r1 == r2.

(重点是我的。)

在第二个示例中(其中 i1=i2=1000),if(i1==i2) 比较结果为 false,因为两个对象的值都大于 127。在这种情况下,== 是一个引用比较,即检查对象是否实际上是同一个对象。

关于java - Java 中的整数类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26935422/

相关文章:

Java Swing 如何检测列表选择事件

java - 无法从并发 CompletionService 获取结果

class - 在Lua中,每个 "object"都必须有自己的方法副本吗?

javascript - 无法使用 JavaScript 控制与另一个元素共享一个 css 类的 css 元素

c++ - 哪个在内存中更快,int 或 char?还有文件映射或 block 读取?

c - 如何检查整数是偶数还是奇数?

java - 整数到字符串的转换?

java - 将 Web 应用程序项目从 eclipse 独立移动到 tomcat

java - 在 Eclipse IDE 中无法将文件从一个驱动器复制到多个驱动器

Android:如何在不同的文件中使用类