JAVA中用println打印时候的一个小问题

大石斑Grouper 2015-12-09 06:12:09
程序一:
import java.util.*;
class LinkedListDemo
{
public static void main(String[] args)
{
LinkedList link = new LinkedList();

link.addFirst("java01");
link.addFirst("java02");
link.addFirst("java03");
link.addFirst("java04");

sop(link);

public static void sop(Object obj)
{
System.out.println(obj);
}
}


程序二:
/*
使用LinkedList模拟一个堆栈或者队列数据结构。

堆栈:先进后出 如同一个杯子。
队列:先进先出 First in First out FIFO 如同一个水管


*/
import java.util.*;
class DuiLie
{
private LinkedList link;
DuiLie()
{
link = new LinkedList();
}

public void myAdd(Object obj)
{
link.addFirst(obj);
}

public Object myGet()
{
return link.removeLast();
}

public boolean isNull()
{
return link.isEmpty();
}
}


class LinkedListTest
{
public static void main(String[] args)
{
DuiLie d1 = new DuiLie();
d1.myAdd("java01");
d1.myAdd("java02");
d1.myAdd("java03");
d1.myAdd("java04");

sop(d1);
}

public static void sop(Object obj)
{
System.out.println(obj);
}
}



想请教的是为什么在程序二中没法直接打印元素,即sop(d1); 打印的结果是d1的哈希值,而程序一中sop(link); 打印的结果是link的元素呢? 谢谢各位的帮助!
...全文
191 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
大石斑Grouper 2015-12-09
  • 打赏
  • 举报
回复
太谢谢你了!!!!!!!!更加爱你了!
  • 打赏
  • 举报
回复
因为DuiLie没有重写tostring()方法,所以System.out.println(obj);调用的是Object类的,Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:getClass().getName() + '@' + Integer.toHexString(hashCode()),而LinkedList重写了方法,返回的是链表里的元素的值。所以在DuiLie类加上 @Override public String toString() { return link.toString(); }; 就可以了。

62,615

社区成员

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

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