我想出了一个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 == f2
f1 == f3
f2 == f1[1]
x == f1[0]
f == f1[0]
我需要选择只有3语句。
那么,1
显然是错误的,因为我们正在比较两个不同的引用,2
显然是真的,因为引用是相同的。但我不知道原始人。我感到困惑的是,如果我们比较Integer
s在-128到127的范围内,他们就是缓存。相关topic。有什么关于原始的,一些狭隘的情况?
我一直在寻找它是如何工作的JLS 8
,但没有发现任何有用的东西。
这是当它autobox,没有自动装箱这里,它只是普通的原始值作仪, –
确实如此。你也可以运行一个输出上述真/假值的程序。 – Joeblade
第三个表达式甚至没有编译。 –