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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int i=1;
if(i<2) int b=1;
这个的结果是显示编译错误的,同时:
int i=1;
if(i<2){
     int b;
}
是不会显示编译错误的,
第一个编译错误的原因是因为 int b=1;代表了两个语句分别是
int b;b=1;
我只是单纯觉得有趣而已................
我在想如果只有这一种赋值语句会发生编译错误,那么开发java语音的人为什么不直接把
他在底层改一下让编译器可以接受并且解析这个错误呢?这是我第一个想到的
第二个就是可能除了这个语句外还有其他语句会导致编译错误,那么这些语句又是哪一些呢?
有人可以解答吗?

6 个回复

倒序浏览
我的观点是  因为第一个这样简单而编译错误的代码如果被识别所带来的代码改动会导致两种后果:1JAVA语言为了更人性化而接受更多这样的代码,从而导致其严谨性松泛而产生非常多的BUG,就算为了不发生BUG而完善代码,这也是一项很大的工程,非短时间内可以完成的。2如果仅仅只是默许第一个代码或者少数的其他几个类似错误通过识别那将没有任何意义,还不如要求写代码的人更严谨点来的轻松。
回复 使用道具 举报 1 0
for(),if()   如果不加{},会默认执行他后面的一条语句,只执行一条   
;    代表一个语句的结束 如果像这样
  for (int i=0;i<100;i++);    //注意末尾这里有一个分号
回复 使用道具 举报
有意思
回复 使用道具 举报
原来如此,学习了
回复 使用道具 举报
好闲啊,a啊啊啊
回复 使用道具 举报
嘉荫 中级黑马 2016-1-20 20:38:48
7#
暖暖贴可以吗,顺便张张姿势
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马