黑马程序员技术交流社区

标题: 谁能告诉我这代码出现什么问题了? [打印本页]

作者: 狼王    时间: 2013-6-10 19:33
标题: 谁能告诉我这代码出现什么问题了?
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()));
    }
}
}

作者: 傻瓜一点红    时间: 2013-6-10 19:47
你自己看一下括号{}吧,括号错了,不配对
作者: 孙金鑫    时间: 2013-6-10 19:49
本帖最后由 孙金鑫 于 2013-6-10 19:50 编辑

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

Demo是一个类,AboutObject是另外一个类,你Demo类中有AboutObject不知道你想做什么。
如果你想得到Demo的哈希值的话,你大括号放错了
作者: 狼王    时间: 2013-6-10 20:22
傻瓜一点红 发表于 2013-6-10 19:47
你自己看一下括号{}吧,括号错了,不配对

非也,并不是括号的问题
作者: 黑马伍哲沂    时间: 2013-6-10 22:11

提问请参阅此帖,谢谢。http://bbs.itheima.com/thread-55113-1-1.html
作者: 傻瓜一点红    时间: 2013-6-10 22:18
狼王 发表于 2013-6-10 20:22
非也,并不是括号的问题

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

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

谢谢提醒噢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2