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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 狼王 高级黑马   /  2013-6-10 19:33  /  1583 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo
{   
     private int num;
     Demo(int num){
     this.num = num;
}
public String toString()
{
     return "Demo"+num;
}
class AboutObject
{
    public static void main(String[] args) //这个地方有问题
    {
           Demo d1 = new Demo(4);
           System.out.println(d1.toString());//哈希值:面向对象.Demo@d9660d
           System.out.println(d1.getClass().getName()+"@"+Integer.toHexString(d1.hashCode()));
    }
}
}

评分

参与人数 1技术分 +1 收起 理由
黑马伍哲沂 + 1 建议对问题进行具体描述。

查看全部评分

9 个回复

倒序浏览
你自己看一下括号{}吧,括号错了,不配对
回复 使用道具 举报
本帖最后由 孙金鑫 于 2013-6-10 19:50 编辑

楼主,你的意思是不是得到Demo的哈希值?

Demo是一个类,AboutObject是另外一个类,你Demo类中有AboutObject不知道你想做什么。
如果你想得到Demo的哈希值的话,你大括号放错了
回复 使用道具 举报
傻瓜一点红 发表于 2013-6-10 19:47
你自己看一下括号{}吧,括号错了,不配对

非也,并不是括号的问题
回复 使用道具 举报

提问请参阅此帖,谢谢。http://bbs.itheima.com/thread-55113-1-1.html
回复 使用道具 举报
狼王 发表于 2013-6-10 20:22
非也,并不是括号的问题

如果你说的是这样的话,按你的思路是想用内部类的形式了,不过这种把主函数定义在内部类中,没用过,似乎很少有这种定义啊,好像这种定义方式无法找到主函数,有点相当于创建一个对象的时候又产生一个主函数,而且你写的这种形式是一种死循环,会出现无数个主函数,呵呵,这样就把电脑搞懵了一样,到底哪个是主函数,虚拟机就无法确定了,不知道这样解释对你是否有帮助
回复 使用道具 举报
你的括号范围写错了,你的代码:Demo{}里面包括了类AbountObject类,所以你在此语句class AboutObject 前面应该加一个大括号}, class Demo{} class AboutObject ()分开写  希望对你有所帮助。
回复 使用道具 举报
狼王 高级黑马 2013-6-11 10:18:02
8#
forward 发表于 2013-6-10 23:03
你的括号范围写错了,你的代码:Demo{}里面包括了类AbountObject类,所以你在此语句class AboutObject 前面 ...

我把括号去掉也一样。
回复 使用道具 举报
这个问题有两种解决办法:
1 由于主函数在AboutObject 中,楼主将这两个类中的Demo 类当做内部类 ,
只需要在建立Demo实例对象时 将Demo d1 = new Demo(4);
修改为 Demo d1 = new AboutObject().new Demo(4);
这样Demo就被当做AboutObject的一个内部类来使用。
2 按楼上所说 将最后的括号  }  移动到class Demo 的结尾处
即该文件中有两个类 ,可以在主函数中直接创建Demo的实例对象
另外给楼主提个小建议:
java 程序中用到{}的地方挺多的 ,建议楼主在编写代码的时候尽量将代码和括号都按统一格式对齐,方便查看哦
回复 使用道具 举报
xiaohu1218 发表于 2013-6-11 10:37
这个问题有两种解决办法:
1 由于主函数在AboutObject 中,楼主将这两个类中的Demo 类当做内部类 ,
只需要 ...

谢谢提醒噢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马