关于System.out.println()直接输出对象的引用

purerock 2012-06-22 02:56:43
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
为什么会输出这两种不同形式的结果,求解释,本人菜鸟!!
...全文
502 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyg990441 2012-06-22
  • 打赏
  • 举报
回复
简单说,就是把你的
void print()
{ System.out.println("年龄:"+age+" 姓名:"+name);
}
去掉,改为
public String toString() {
return ("年龄:"+age+" 姓名:"+name;
}
ap5176b8r 2012-06-22
  • 打赏
  • 举报
回复
toString 方法不同
RDroid 2012-06-22
  • 打赏
  • 举报
回复
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();
}

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧