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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cro 初级黑马   /  2012-6-1 23:05  /  2128 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

void a(){        b();     }
void b(){    a();     }

这种做法为什么在 java 里不报错!

13 个回复

倒序浏览
class text
{
   void a()
   {        
      b();   
    }
   void b()
   {   
    a();     
   }
public static void main(String[] args)
{
}
}
首先声明这个程序在java中是可以编译通过的,但是在C语言中却不能编译。这个我测试了。这个我终于知道点眉目了,原来java里是不需要方法声明的,而C语言里需要函数声明。各位有何高见,贴出来分享!
回复 使用道具 举报
怎么可能不报错啊 是不是看错了~

点评

cro
这个问题得亲手试一下,不要想当然!  发表于 2012-6-4 00:05
回复 使用道具 举报
楼主要模仿的是死锁现象的发生吗?  

点评

cro
不,没开线程,如何死锁!!倒是方法调用问题!  发表于 2012-6-4 00:06
回复 使用道具 举报
这个应该是2个人互相玩上了吧,跟死循环差不多,你调用我,我调用你....这种情况绝对要避免

点评

cro
这个你要试一下,不报错的!  发表于 2012-6-4 00:04
回复 使用道具 举报
怎么可能报错,lz看不出是循环吗?不是死锁,而是死循环,因为你放在了一个main函数里。
回复 使用道具 举报
我刚用这个类测试了一遍,会报错啊,还不少呢。

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

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

捕获.PNG
回复 使用道具 举报
cro 初级黑马 2012-6-3 23:39:06
7#
王月 发表于 2012-6-2 10:06
我刚用这个类测试了一遍,会报错啊,还不少呢。

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

注意了,这是两个方法,你怎么就这样放在mian方法里呢!!
回复 使用道具 举报
cro 初级黑马 2012-6-4 00:03:19
9#
刘伯阳 发表于 2012-6-1 23:28
怎么可能不报错啊 是不是看错了~

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



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

回复 使用道具 举报
cro 初级黑马 2012-6-4 22:04:56
11#
王月 发表于 2012-6-4 21:40
嗯,是可以编译,之前我把他们都放主函数里了。
      我又重新测试了一遍,可以编译通过,但是不 ...

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

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

ss.jpg
回复 使用道具 举报
嗯,是可以运行,我把两个类名写翻了,但是如果在里面写个输入语句打印个a,会出现这个。咱们还是别讨论这个问题了,这样的方法没有意义啊
回复 使用道具 举报

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


简单说一下自己的看法吧,我觉得你写的这个代码没有任何意义,在jvm加载该类进内存后,会首先寻找main()关键字,进入主函数,运行程序。根本不涉及调用a(),b()方法的进栈操作
回复 使用道具 举报
之所以说你这个程序没有报错,jvm首先会编译程序,检测一下语法是否合法,在检测过程中,只要语法匹配,那么它是允许通过的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马