【发布时间】:2015-02-27 08:54:03
【问题描述】:
我在 Java 测试中提出了以下问题:
import java.awt.Button;
class CompareReference
{
public static void main(String [] args)
{
float f = 42.0f;
float [] f1 = new float[2];
float [] f2 = new float[2];
float [] f3 = f1;
long x = 42;
f1[0] = 42.0f;
}
}
哪三个陈述是正确的?
f1 == f2f1 == f3f2 == f1[1]x == f1[0]f == f1[0]
我只需要选择 3 个语句。
嗯,1 显然是错误的,因为我们在比较两个不同的引用,2 显然是正确的,因为引用是相同的。但我不知道原语。我感到困惑的是,如果我们比较 Integers 在 -128 到 127 的范围内,它们正在缓存。相关topic。有没有关于原语的东西,一些狭窄的情况?
我一直在寻找它在 JLS 8 中的工作原理,但没有发现任何有用的东西。
【问题讨论】:
-
就是自动装箱的时候,这里没有自动装箱,只是简单的原始值比较
-
确实如此。你也可以运行一个程序来输出上面的真/假值。
-
第三个表达式甚至无法编译。
-
为什么是
import java.awt.Button;? :D -
@St.Antario - 是的。检查this question
标签: java comparison comparison-operators