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。