equals方法与==到底有什么区别
来源:互联网 发布:电脑怎么连接本地网络 编辑:程序博客网 时间:2024/06/08 12:53
==:是一个比较运算符,用来判断两个变量是否相等即两个对象在内存中的首地址是否相同。
equals ():是Object类提供的一个实例方法也就是说每个类都含有这个方法,如果不对其重写。它的作用是和==是一样的
如果不对其重写。
下面看个例子
package com.iss.test;
public class Test {
public static void main(String[] args) {
String s1, s2, s3 = "abc", s4 = "abc";
s1 = new String("abc");
s2 = new String("abc");
System.out.println(s3 == s4);// 结果为true这是因为在字符串池中如果已经有相同的字符串,就会将值直接赋给引用,因此它们指向的同一个对象
System.out.println(s1 == s2);// 結果为false这是因为它们的内存地址不一样,指向的对象不一样
System.out.println(s1.equals(s2));// 结果为true。为什么呢不是说它和==的作用是一样的吗?原因在于它把从Object继承而来的equals方法重写只要保证内容相同就返回true
// 但是在Stringbuilder中就没有对equals()进行重写所以结果为false;
StringBuilder builder = new StringBuilder("abc");
StringBuilder builder2 = new StringBuilder("abc");
System.out.println(builder.equals(builder2));
// 变为String类型就会相等了可见String对equals()进行了重写
System.out.println(builder.toString().equals(builder2.toString()));
}
}
Object 中默认的equals()和==是等价的只是比较内存的中的地址,我们可以通过重写equals()来自定义自己的等价规则
ps:对基本类型的比较只能是通过==进行比较因为他们没有equals()这个方法只要数值相同,可以不问他们的数据类型。这是因为java的自动数据类型提升。
int a = 10;
float b = 10.0f;
double c = 10.0000;
System.out.println(a==b);//true
System.out.println(a==c);//true
8个基本类型所对应的包装类型的equals()方法也被重写成只比较内容。
Integer num1=new Integer(12);
Integer num2=new Integer(12);
System.out.println(num1==num2);//false
System.out.println(num1.equals(num2));//true
总结:两者区别就在于equals()方法有没有被重写。
- equals方法与==到底有什么区别
- “==”和equals()方法到底有什么区别
- Java ==与equals方法有什么区别
- "=="和equals方法究竟有什么区别?
- "=="和equals方法究竟有什么区别?
- "=="和equals方法究竟有什么区别
- “==”和equals方法究竟有什么区别?
- "=="和equals方法有什么区别
- "=="和equals方法究竟有什么区别
- "=="和equals方法有什么区别
- "=="和equals方法究竟有什么区别
- "=="和equals方法究竟有什么区别?
- "=="和equals方法究竟有什么区别
- JAVA中“==”和“equals”方法有什么区别
- "=="和equals 方法究竟有什么区别?
- “==”和equals方法究竟有什么区别?
- "=="和equals方法有什么区别?
- "=="和equals方法究竟有什么区别?
- 歌曲
- ifconfig命令详解
- 算法竞赛入门经典6.3.2层次遍历
- HTML表单
- 手机里删除的联系人还能找回来吗
- equals方法与==到底有什么区别
- 第十二周项目三日期时间类
- qt里产生随机数
- HDU解题报告——1728
- 在Launcher3中增加主题切换功能
- Spring事务管理的五种实现
- POJ1552
- android控件隐藏
- Spring AOP 实现原理