一 实验目的
了解equal和toString方法
二 实验软件环境
操作系统:windows xp
java version: "1.7.0_51"
开发工具:Eclipse Standard/SDK Version: Kepler Service Release2
三 实验内容
分别建立两个类:A和B(都是默认继承自Object类)
重写A中的equal方法;
重写B中的toString方法;
即:
A中的equal方法是重写之后的新的方法,A中的toString方法是继承自Object的方法;
B中的toString方法是重写之后的新方法,B中的equal方法是继承自Object的方法。
通过对比A和B的输出结果,可以看出Object类中的equal和toString方法的用法,以及重载之后的方法。
程序代码:
package chapter01; class A
{
inti;
public String toString()
{
return "我是类A";
}
A(int i)
{
this.i = i;
}
publicboolean equals(Object obj)
{
if(obj != null && (objinstanceof A))
{
if(this.i == ((A) obj).i)
{
return true;
}
}
return false;
}
}
class B
{
int i;
public String toString()
{
return "我是类B";
}
B(int i)
{
this.i = i;
}
}
public class Demo
{
public static void main(String []args)
{
A a1 = new A(3);
A a2 = new A(3);
System.out.println(a1);
System.out.println(a2);
System.out.println(a1.equals(a2)); B b1 = new B(3);
B b2 = new B(3);
System.out.println(b1);
System.out.println(b2);
System.out.println(b1.equals(b2));
}
}
程序输出结果:
chapter01.A@2cdb03a1
chapter01.A@5ecb5608
true
我是类B
我是类B
false
四 实验结果
Object类中的equal方法是统一的含义,即:比较的两者就是同一个对象,因为B没有重写从Object类中继承的equal方法,所以输出的结果是false;而A重写了Object类中的该属性使其具有相等的含义,即只要两个对象都是A的对象并且对应的属性值相同,就是相等,所以输出结果为true。
Object类中的toString方法可以返回一个代表这个对象的字符串,由所属类名,一个“@”符号和这个对象哈希码的无符号十六进制表达式组成。从结果可以看出,A的输出结果就符合这种格式,而B重写了该方法,所以输出了不同的结果。