==与equals的区别

  • Post author:
  • Post category:其他


public class Exam {
	public int xuefen;
	
	public  Exam(int xuefen){
		this.xuefen=xuefen;
	}
	
	public boolean test(Object obj){
		if(this==obj){
			return true;
		}
		if(obj instanceof Exam){
			Exam e = (Exam)obj;
			return this.xuefen==e.xuefen;
		}
		return false;
	}
	//创建一个主函数来测试==与equals的区别,
	public static void main(String[]args){
		
		Exam a1=new Exam(80);
		Exam a2=new Exam(80);
		Exam a3=a2;
		
		int a4=80;
		int a5=80;
		
		Integer a6=80;
		Integer a7=80;
		
		Integer a8=new Integer(80);
		Integer a9=new Integer(80);
		
		
		System.out.println(a1==a2);
		System.out.println(a1.equals(a2));
		System.out.println(a1.equals(a3));
		System.out.println("-----------------------------------------------");
		
		System.out.println(a4==a5);
		System.out.println(a6==a7);
		
		System.out.println(a4==a6);
		System.out.println(a8==a7);
		
		System.out.println(a8==a4);
		System.out.println(a8==a9);
		
		System.out.println("-----------------------------------------------");
		System.out.println(a6.equals(a7));
		System.out.println(a8.equals(a9));
		
		System.out.println(a8.equals(a7));
		System.out.println(a8.equals(a4));
		
		
	}

}

==:是比较两个数据是否相等,比较的是变量的内存地址是否相等。

equals:

1.equals是object类提供的一个比较方法,用来比较两个对象是否相等。

2.在调用object类中的equals方法时比较的也是两个变量的内存地址是否相等。(和==用法一样)

3.在调用其他类中的equals方法时,判断两个变量是否相等取决于这个类是如何重写equals方法的。

列如:在Integer类中equals是比较两个值是否相等。

基本类型和对应的类类型在进行运算的时候,类类型的数据会自动的拆箱。

拆箱:将对象中的数据自动转换成基本类型

装箱:将基本类型的数据包装成引用类型



版权声明:本文为iteye_71原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。