equals 和== 的区别

来源:互联网 发布:淘宝服装店铺页头图片 编辑:程序博客网 时间:2024/06/06 10:00

1、在基础类型中 == 和equals是没有区别的 都是比较的内存中的地址

2、在复合类型中如String 由于重写了equals方法, 所以比较的是对象的值

例如 String a="123";

String b="123";

System.out.println(a==b);  输出 true

System.out.println(a.equals(b)); 输出true

String c=new String("123");

System.out.println(a==c); 输出false;

System.out.println(a.equals(c));输出true;


为什么 a==b输出 true  a==c输出false 这是因为 String 在内存中有一块字符串缓冲区,由于a="123" 已经创建了,当b再引用的时候 就会直接执行已经创建的地址, 但是由于String c=new String("123"); 已经明显的告诉要new 一个 不要原来已经存在的,所以就会在内充中重新创建一个地址,然后值是123  !

0 0
原创粉丝点击