黑马程序员----Object类的eguals()和toString()方法

                                                   ------- android培训java培训、期待与您交流! ----------


Object类的eguals()和toString()方法

一,概念

           Object类是所有对象的直接或者间接父类,“传说中的上帝”,该类中定义的肯定是所哟对象的功能。也就是说任意一个对象一旦建立,就具备Object类中的方法。

 翻阅API文档发现有以下一些方法:

  

  二、equal()方法

             java规定所有的对象都具备比较比较性,都能比较俩对象是否相同,亦即所有对象都继承Object类。举例如下:

           

package xiaobing.study;
class Demo{//class Demo extends Object
	
}

public class ObjectDemo1 {

		public static void main(String[] args){
			Demo d1=new Demo();
			Demo d2=new Demo();
			Demo d3=d1;
			System.out.println(d1==d2);
			System.out.println(d1==d3);
			System.out.println(d1.equals(d3));
		}
}

package xiaobing.study;
class Demo{//class Demo extends Object
	
}

public class ObjectDemo1 {

		public static void main(String[] args){
			Demo d1=new Demo();
			Demo d2=new Demo();
			Demo d3=d1;
			System.out.println(d1==d2);
			System.out.println(d1==d3);
			System.out.println(d1.equals(d3));
		}
}

以上代码就是实现了Object中的equal()方法。

             当我们需要在自己的类中定义比较方法时,利用继承的思想,只要复写Object类中的比较方法,我们先写下面代码:

package xiaobing.study;
class Demo{//class Demo extends Object
	private int num;
	Demo(int num){
		this.num=num;
	}
	public boolean equals(Object obj){
		return this.num==obj.num;
	}
}

public class ObjectDemo1 {

		public static void main(String[] args){
			Demo d1=new Demo();
			Demo d2=new Demo();
			Demo d3=d1;
			System.out.println(d1==d2);
			System.out.println(d1==d3);
			System.out.println(d1.equals(d3));
		}
}


package xiaobing.study;
class Demo{//class Demo extends Object
	private int num;
	Demo(int num){
		this.num=num;
	}
	public boolean equals(Object obj){
		return this.num==obj.num;
	}
}

public class ObjectDemo1 {

		public static void main(String[] args){
			Demo d1=new Demo();
			Demo d2=new Demo();
			Demo d3=d1;
			System.out.println(d1==d2);
			System.out.println(d1==d3);
			System.out.println(d1.equals(d3));
		}
}

发现以上代码根本无法通过编译,这时由equals方法传入的对象类型为Object而这个类中不存在num,修改如下:

package xiaobing.study;
class Demo{//class Demo extends Object
	private int num;
	Demo(int num){
		this.num=num;
	}
	public boolean equals(Object obj){//Object d=new Demo();
		Demo d=(Demo) obj;  //多态的应用
		return this.num==d.num;
	}
}

public class ObjectDemo1 {

		public static void main(String[] args){
			Demo d1=new Demo(4);
			Demo d2=new Demo(5);
			Demo d3=d1;
			System.out.println(d1==d2);
			System.out.println(d1==d3);
			System.out.println(d1.equals(d3));
		}
}

package xiaobing.study;
class Demo{//class Demo extends Object
	private int num;
	Demo(int num){
		this.num=num;
	}
	public boolean equals(Object obj){//Object d=new Demo();
		Demo d=(Demo) obj;  //多态的应用
		return this.num==d.num;
	}
}

public class ObjectDemo1 {

		public static void main(String[] args){
			Demo d1=new Demo(4);
			Demo d2=new Demo(5);
			Demo d3=d1;
			System.out.println(d1==d2);
			System.out.println(d1==d3);
			System.out.println(d1.equals(d3));
		}
}

PS:以上实例是传入本类比较,当传入其他类时就需要应用instanceof关键字进行判断,如下:

package xiaobing.study;
class Demo{//class Demo extends Object
	private int num;
	Demo(int num){
		this.num=num;
	}
	public boolean equals(Object obj){//Object d=new Demo();
		if(obj instanceof Demo)//instanceof应用
			return false;
		Demo d=(Demo) obj;
		return this.num==d.num;
	}
}
class Person{
	
}
public class ObjectDemo1 {

		public static void main(String[] args){
			Demo d1=new Demo(4);
			Demo d2=new Demo(5);
			Person p=new Person();
			System.out.println(d1.equals(p));

		}
}

package xiaobing.study;
class Demo{//class Demo extends Object
	private int num;
	Demo(int num){
		this.num=num;
	}
	public boolean equals(Object obj){//Object d=new Demo();
		if(obj instanceof Demo)//instanceof应用
			return false;
		Demo d=(Demo) obj;
		return this.num==d.num;
	}
}
class Person{
	
}
public class ObjectDemo1 {

		public static void main(String[] args){
			Demo d1=new Demo(4);
			Demo d2=new Demo(5);
			Person p=new Person();
			System.out.println(d1.equals(p));

		}
}

三、toString()方法

        java认为所有对象都可以变为字符串形式体现,只要通过toString()方法实现,代码如下:

package xiaobing.study;
class StringDemo{
	
}
public class ToStringDemo {
	public static void main(String[] args){
		StringDemo d1=new StringDemo();
		System.out.println(d1.toString());
	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值