equals与==的区别

来源:互联网 发布:淘宝售后率是什么意思 编辑:程序博客网 时间:2024/06/03 08:19
equals是比较两个对象的值
而==是比较两个对象的地址
例如:
String a="123";
String b="123";
String c= new String("123");
 
System.out.println(a==b);//结果为true
System.out.println(a==c);//结果为false
System.out.println(b==c);//结果为false
System.out.println(a.equals(b));//结果为true
System.out.println(a.equals(c));//结果为true
System.out.println(b.equals(c));//结果为true
出现这种结果原因:
程序在运行到String a="123"时候会创建一个字符串缓冲池使用,而a这个对象会被创建,其值为"123"。
当程序运行到String b="123"时,程序首先会在这个String缓冲池中寻找相同值的对象,因为在运行
String a="123"这句代码时,字符串缓冲池中已经有了a这个对象,其值与要创建的对象b的之相等,所以
在字符串缓冲池中就不会创建b对象,而是将a对像引用给b(相当与b为a的一个别名)。
当程序运行String c= new String("123")时,则不会在字符串缓冲池找具有相同值的对象,而是会新建
一个对象c,其值为"123"。
而==是比较对象的地址,equals是比较两个对象的值。
所以a与b为同一个对象,其地址相同,而c是不同的对象,其地址与a,b不同。
0 0
原创粉丝点击