黑马程序员技术交流社区

标题: 关于方法调用 [打印本页]

作者: cro    时间: 2012-6-1 23:05
标题: 关于方法调用
void a(){        b();     }
void b(){    a();     }

这种做法为什么在 java 里不报错!
作者: 刘伯阳    时间: 2012-6-1 23:28
怎么可能不报错啊 是不是看错了~
作者: 何拴绪    时间: 2012-6-1 23:43
楼主要模仿的是死锁现象的发生吗?  
作者: 杨海波    时间: 2012-6-2 01:04
这个应该是2个人互相玩上了吧,跟死循环差不多,你调用我,我调用你....这种情况绝对要避免
作者: 朝哥    时间: 2012-6-2 09:36
怎么可能报错,lz看不出是循环吗?不是死锁,而是死循环,因为你放在了一个main函数里。
作者: 王月    时间: 2012-6-2 10:06
我刚用这个类测试了一遍,会报错啊,还不少呢。

这是lz学习的时候遇到的吗,还是想玩玩啊,这种方法还是不要琢磨了。
建议lz把握好时间,进黑马还是有难度的,一起努力啊。

捕获.PNG (21.95 KB, 下载次数: 162)

捕获.PNG

作者: cro    时间: 2012-6-3 23:39
王月 发表于 2012-6-2 10:06
我刚用这个类测试了一遍,会报错啊,还不少呢。

这是lz学习的时候遇到的吗,还是想玩玩啊,这种方法还是不 ...

注意了,这是两个方法,你怎么就这样放在mian方法里呢!!
作者: cro    时间: 2012-6-3 23:49
class text
{
   void a()
   {        
      b();   
    }
   void b()
   {   
    a();     
   }
public static void main(String[] args)
{
}
}
首先声明这个程序在java中是可以编译通过的,但是在C语言中却不能编译。这个我测试了。这个我终于知道点眉目了,原来java里是不需要方法声明的,而C语言里需要函数声明。各位有何高见,贴出来分享!
作者: cro    时间: 2012-6-4 00:03
刘伯阳 发表于 2012-6-1 23:28
怎么可能不报错啊 是不是看错了~

你不试一下怎么知道呢!绝对不报错!
作者: 王月    时间: 2012-6-4 21:40
本帖最后由 王月 于 2012-6-4 21:42 编辑
cro 发表于 2012-6-3 23:39
注意了,这是两个方法,你怎么就这样放在mian方法里呢!!



      嗯,是可以编译,之前我把他们都放主函数里了。
      我又重新测试了一遍,可以编译通过,但是不能运行,会出现错误。我没有学过c,能做的只有这些了。


作者: cro    时间: 2012-6-4 22:04
王月 发表于 2012-6-4 21:40
嗯,是可以编译,之前我把他们都放主函数里了。
      我又重新测试了一遍,可以编译通过,但是不 ...

这个自己测试!是能编译能运行的!

ss.jpg (3.9 KB, 下载次数: 152)

ss.jpg

作者: 王月    时间: 2012-6-5 00:19
嗯,是可以运行,我把两个类名写翻了,但是如果在里面写个输入语句打印个a,会出现这个。咱们还是别讨论这个问题了,这样的方法没有意义啊

作者: 李保成    时间: 2012-6-5 02:19

class text
{
   void a()
   {        
      b();   
    }
   void b()
   {   
    a();     
   }
public static void main(String[] args)
{
}
}


简单说一下自己的看法吧,我觉得你写的这个代码没有任何意义,在jvm加载该类进内存后,会首先寻找main()关键字,进入主函数,运行程序。根本不涉及调用a(),b()方法的进栈操作
作者: 李保成    时间: 2012-6-5 02:20
之所以说你这个程序没有报错,jvm首先会编译程序,检测一下语法是否合法,在检测过程中,只要语法匹配,那么它是允许通过的。




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