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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Neverbelazy 中级黑马   /  2013-5-8 23:16  /  1683 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Neverbelazy 于 2013-5-9 00:11 编辑

写代码的时候突然遇到了这样一个编译错误,很不理解
  1. public class IfTest {
  2.         public static void main(String[] args) {
  3.                 int x=1;
  4.                 if (x<1)
  5.                         IfTest it=new IfTest();//词句不用{} 封闭; 提示错误
  6.         }
  7. }
复制代码
但是如果 if之后的语句用 { }封闭,就可以顺利编译通过?!这是为什么呢?请大家帮忙指点,谢谢!
  1. public class IfTest {
  2.         public static void main(String[] args) {
  3.                 int x=1;
  4.                 if (x<1){
  5.                         IfTest it=new IfTest();//词句用{} 封闭; 无错误提示
  6.                   }
  7.         }
  8. }
复制代码
================================推荐答案可以看看 1楼 @尹桥印 同学的回复=======================================================

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 很有意思

查看全部评分

9 个回复

倒序浏览
这是if语句的格式,如果你用editplus  你一输入if 则会自动生成if(){}这样的格式,执行条件需要写入{}里面
回复 使用道具 举报
兄弟,我研究了半天,可以简单给你解释一下,if或for之后不加{},就只会执行紧跟的一句,if(x < 1)之后,不加{},错不在new IfTest();而是错在 IfTest if中的IfTest。至于具体原因,期待高人解释
回复 使用道具 举报
尹桥印 发表于 2013-5-8 23:23
不得不说这个是个很的好例子。我觉得解释是这样的:
if条件后面必须要跟一个语句,就像而一个块可以作为一 ...

不得不说,你的分析很有道理
回复 使用道具 举报
尹桥印 发表于 2013-5-8 23:23
不得不说这个是个很的好例子。我觉得解释是这样的:
if条件后面必须要跟一个语句,就像而一个块可以作为一 ...

有些理解了,如果不加{},直接申明一个 例如 int x=0; 一方面是这个变量x根本没有用(刚产生就消失了),另一方面其使用范围也会给人误解(如果不注意也会认为这个变量不是隶属于if),所以不如就不容许这样的定义存在,强迫写一个{ }代码块。
回复 使用道具 举报
我记得我遇到过一个类似的问题,在学习IO流的时候,写出字节流的时候 ,if里面我写了一个变量,没加大括号eclipse提示错误,老师和我写的就这个不同,(老师的执行语句就一句的话,习惯性的没加大括号) 当时老师说的是,这个算是java语法的一种规范,因为我那个局部变量在外面使用不了,所以java干脆就不让我这么写.
  所以严格说起来的话,这个属于java语法上的问题吧
回复 使用道具 举报
{:soso_e102:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马