欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java关系操作符==和equals()区别

程序员文章站 2022-06-16 21:24:47
...

    在java中包含的关系操作符有小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)。

对象的等价性:

    ==和!=适用所有对象,但是这两个操作符通常在比较对象的时候会出问题,下面一个列子:

public class Test {
	public static void main(String[] args) {
		String s1=new String("xxxx1");
		String s2=new String("xxxx1");
		System.out.println(s1==s2);
		System.out.println(s1!=s2);
	}
}

输出:false

           true

在这里==和!=比较的是对象的引用。尽管对象的内容相同,但是对象的引用却是不同的,说以s1==s2是false。

如果想比较两个对象的实际内容是否相同,此时,必须使用所有对象都适用的特殊方法equals()。但这个方法不适用于“基本类型”,基本类型直接使用==和!=即可,列子:

public class Test {
	public static void main(String[] args) {
		String s1=new String("xxxx1");
		String s2=new String("xxxx1");
		System.out.println(s1.equals(s2));
	}
}

输出:true

但是也有例外!!!!!!

假如你创建了自己的类,就想下面这样:

public class Test {
	 static int i;
	 static class EqualsMethod2{
		public static void main(String[] args) {
			Test t1=new Test();
			Test t2=new Test();
			t1.i=t2.i=100;
			System.out.println(t1.equals(t2));
		}	
	 }
}

输出:false

这是由于equals()的默认行为是比较引用。所以除非在自己的新类中覆盖equals()方法,否则不可能表现出我们希望的行为。

大多数java类库都实现了equals()方法,以便用来比较对象的内容,而非比较对象的引用,

相关标签: jav