【Java笔试题】有关基本类型的比较

在牛客刷题时遇到这样的一个问题:
针对以下代码,哪些选项执行后是true的:()
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;
}
}
A. f1 == f2
B. x == f1[0]
C. f1 == f3
D. f2 == f1[1]
答案:BC(我只选择了C)

在这里的话主要是数据基本类型的比较,基本类型之间的比较,应该会将低精度类型自动转为高精度类型再比较
【Java笔试题】有关基本类型的比较

转换原则:从低精度向高精度转换byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换

回到本题目, x == f1[0],x为long类型,f1[0]为float类型,比较时低精度会自动往高精度转换,则x会变成float类型,然后比较就是相等的!