import java.io.File;
import java.io.IOException;
class wan{
int age;
String name;
void print()
{ System.out.println("年龄:"+age+" 姓名:"+name);
}
public wan(int a,String b){
age=a;
name=b;
}
public static void main(String args[])
{wan a=new wan(10,"万");
a.print();
System.out.println(a);
File f1=new File("C:\\wan");
File f2=new File(f1,"UseFile.java");
System.out.println(f2);
}
}
输出结果:
wan@de6ced
C:\wan\UseFile.java
为什么会输出这两种不同形式的结果,求解释,本人菜鸟!!

解决方案 »

  1.   

    System.out.println(obj)
     等效于
    System.out.println(obj.toString());具体输出什么,取决与实际的类定义的 toString()方法对于默认的继承自Object类的,没有覆写toString()方法的话,Object.toString()的默认实现是
        public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
    因此,wan类的实例会打印出  wan@de6ced而File类覆写了toString()方法,返回文件的路径
        public String toString() {
            return getPath();
        }
      

  2.   

    简单说,就是把你的
    void print()
    { System.out.println("年龄:"+age+" 姓名:"+name);
    }
    去掉,改为
    public String toString() {
            return ("年龄:"+age+" 姓名:"+name;
    }