您的位置:首页 > 移动开发 > Objective-C

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

2015-03-28 20:25 579 查看
                                                   -------
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());
}
}





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: