A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Havorld 中级黑马   /  2014-7-28 23:33  /  766 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们直接打印对象的话打印的是哈希值是十六进制的,我重写了toString方法后怎么还不行
public String toString() {
    return getClass().getName() + "@" + Integer.parseInt("(Integer.toHexString(hashCode()))",16);

2 个回复

倒序浏览
本帖最后由 黎志勇 于 2014-7-29 07:15 编辑

首先,你写的程序语法就有问题
  1. return getClass().getName() + "@" + Integer.parseInt("(Integer.toHexString(hashCode()))",16);
复制代码

Integer.toHexString(hashCode()) 的结果本来就是一个字符串,你外面还用双引号括住,闹哪样?应该是

  1. return getClass().getName() + "@" + Integer.parseInt(Integer.toHexString(hashCode()),16);
复制代码
其次,Integer.toHexString(hashCode()) 这个就已经是把哈希值转换成16进制的形式输出字符串,
你外面又来个 Integer.parseInt(Integer.toHexString(hashCode()),16); 把已经转成的16进制结果解释回去,这样不就跟直接调用hashCode()没啥两样了么,
  1. return getClass().getName()+ "@" + Integer.toHexString(hashCode());
复制代码
只要这样就行了啊。



回复 使用道具 举报
黎志勇 发表于 2014-7-29 06:57
首先,你写的程序语法就有问题

Integer.toHexString(hashCode()) 的结果本来就是一个字符串,你外面还用双 ...

3克油very好吃
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马