Java中为何1000==1000为假,100==100却为真?
- 内容介绍
- 文章标签
- 相关推荐
本文共计916个文字,预计阅读时间需要4分钟。
这是一个很有意思的讨论话题。
如果你运行以下代码:
javaInteger a=1000, b=1000;System.out.println(a==b);
// 1 Integer c=100, d=100;// System.out.println(c==d);
你会得到以下结果:
falsetrue
基本知识:我们知道,`==` 运算符用于比较两个对象是否引用相同的内存地址。对于基本数据类型,它比较的是值是否相等。而对于对象类型(如 `Integer`),它比较的是两个对象是否指向同一个实例。
在这个例子中:
- `a` 和 `b` 是两个 `Integer` 对象,尽管它们的值都是 1000,但由于 `Integer` 缓存机制,它们可能指向同一个实例,所以 `a==b` 结果为 `true`。- `c` 和 `d` 如果没有注释掉,它们的值都是 100,因此 `c==d` 应该返回 `true`。但是,由于注释了这行代码,我们无法看到结果。
所以,如果你去运行这段代码,你会得到 `false` 和 `true`。
这是一个挺有意思的讨论话题。
本文共计916个文字,预计阅读时间需要4分钟。
这是一个很有意思的讨论话题。
如果你运行以下代码:
javaInteger a=1000, b=1000;System.out.println(a==b);
// 1 Integer c=100, d=100;// System.out.println(c==d);
你会得到以下结果:
falsetrue
基本知识:我们知道,`==` 运算符用于比较两个对象是否引用相同的内存地址。对于基本数据类型,它比较的是值是否相等。而对于对象类型(如 `Integer`),它比较的是两个对象是否指向同一个实例。
在这个例子中:
- `a` 和 `b` 是两个 `Integer` 对象,尽管它们的值都是 1000,但由于 `Integer` 缓存机制,它们可能指向同一个实例,所以 `a==b` 结果为 `true`。- `c` 和 `d` 如果没有注释掉,它们的值都是 100,因此 `c==d` 应该返回 `true`。但是,由于注释了这行代码,我们无法看到结果。
所以,如果你去运行这段代码,你会得到 `false` 和 `true`。
这是一个挺有意思的讨论话题。

