java中的==,基础的用法就是,比较两者的内存地址。
但是这么说是不准确的。
如果比较的是数字,那么就是比较值。
比如:
public static void main(String[] args) {
int a =10;
long b =10;
float d =10.0f;
float e =0.5f;
double f =0.5d;
double c =10.0d;
System.out.println(a==b);
System.out.println(a==c);
System.out.println(b==c);
System.out.println(d==c);
System.out.println(e==f);
}
打印出来都是true。
但是你以为这么简单就完了么?那你就错了。
既然说了是比较值,那么数字在计算机内部是二进制存储的,整数还好说,小数就值得说道说道了。
public static void main(String[] args) {
float e =0.1f;
double f =0.1d;
System.out.println(e==f);
}
这块代码它的输出就是false了
原因:
0.5在二进制中是0.1;正是如此double和float在内存中都是0.1
但是0.1在二进制中是无限循环小数,由于两者精度不一样,自然内存中的值也就不一样。因此==比较的结果就是false。
11万+

被折叠的 条评论
为什么被折叠?



