equals和==简介
==既可以比较基本类型也可以比较引用类型 ,对于基本类型就是比较值,对于引用类型比较的就是内存地址,
equals是属于java.lang.Ojbect类里的方法,如果该方法没有被重写过,默认也是==。
总结
基本类型
当用于基本数据类型(如int、char、boolean等)时,==是比较它们的值是否相等。例如:
int a = 5;
int b = 5;
System.out.println(a == b); // 输出:true
引用类型
- 当用于引用类型的变量时,==比较的是对象的引用地址是否相同,即两个引用是否指向堆内存中的同一个对象实例。
String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1 == s2); // 输出:false,因为它们是两个不同的对象实例
equals
- equals()是Object类中的一个方法,所有Java类都继承了它。默认实现也是基于引用的比较,与==作用相似。
Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1.equals(o2)); // 输出:false,因为它们是不同对象实例
- 许多类(如String、Integer等)重写了equals()方法,使其按照对象的内容或值进行比较。
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2)); // 输出:true,因为虽然它们是不同的对象,但内容相同
总结来说,在处理引用类型时,==检查的是对象引用的同一性(是否指向内存中的同一个对象),而equals()在某些类中(尤其是覆盖了该方法的类)则是检查对象的内容或属性是否相等。因此,在使用引用类型时,如果要根据对象的内容来判断相等性,应该优先考虑使用equals()方法,并确保理解所操作类中equals()的具体实现方式。
基本类型
功能不同
==是判断两个变量或实例是不是指向同一个内存空间。
"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。
定义不同
"equals"在JAVA中是一个方法。
"=="在JAVA中只是一个运算符合。
运行速度不同
"“比"equals"运行速度快,因为”"只是比较引用。
“equals"比”=="运行速度要慢。