public boolean equals(Object obj)//Object obj = new Demo();
{
if(!(obj instanceof Demo))
return false;
Demo d = (Demo)obj;
return this.num == d.num;
}
public String toString()
{
return "demo:"+num;
}
}
class Person
{
}
class ObjectDemo
{
public static void main(String[] args)
{
Demo d1 = new Demo(4);
System.out.println(d1);//这句的结果是demo:4 ,实在不解,求解释。
Demo d2 = new Demo(7);
System.out.println(d2.toString());//这句的结果是demo:7 ,看起来结构是对的,但是num的值是怎么附加到toString函数中的呢??
}
}
---------------------------------------------------------------------------------------------------------------------------------------
原因是这样的:
当执行代码Demo d1 = new Demo(4); 是就创建Demo对象,又因为new Demo(4);是代参数的,就会找到Demo中带参数的构造函数
把4的传递出去 要找的构造函数是:
Demo(int num)
{
this.num = num;
}
这样 num的值就是4了。
当执行代码System.out.println(d1) 时会自动调用
public String toString()
{
return "demo:"+num;
}
因为返回的值是num,所以结果是 demo:4
关于7的值其实是一样的,只不过在输出时直接调用了d2.toString()方法。作者: 秦久启 时间: 2013-4-6 12:26
给你举个简单的一个例子吧:object 类中主要就是有这几个方法: public Object(); public boolean equals(Object obj); public int hashCode(); public String toString();那么现在就看看toString方法:
class Demo{
}
public class ObjectDemo{
public static void main(String args[]){
Demo d = new Demo();
System.out.println("不加上toString()输出" + d);
System.out.println("加上toString()输出" + d.toString());
}
}
运行发现结果都是一样的:也就是说对象输出的时候一定会调用Object类中的toString()方法打印内容