黑马程序员技术交流社区
标题:
一个关于if语句的问题
[打印本页]
作者:
Neverbelazy
时间:
2013-5-8 23:16
标题:
一个关于if语句的问题
本帖最后由 Neverbelazy 于 2013-5-9 00:11 编辑
写代码的时候突然遇到了这样一个编译错误,很不理解
public class IfTest {
public static void main(String[] args) {
int x=1;
if (x<1)
IfTest it=new IfTest();//词句不用{} 封闭; 提示错误
}
}
复制代码
但是如果
if之后的语句用 { }封闭,就可以顺利编译通过
?!这是为什么呢?请大家帮忙指点,谢谢!
public class IfTest {
public static void main(String[] args) {
int x=1;
if (x<1){
IfTest it=new IfTest();//词句用{} 封闭; 无错误提示
}
}
}
复制代码
================================推荐答案可以看看 1楼 @尹桥印 同学的回复=======================================================
作者:
黑马-张超
时间:
2013-5-8 23:31
这是if语句的格式,如果你用editplus 你一输入if 则会自动生成if(){}这样的格式,执行条件需要写入{}里面
作者:
liuelxiwd
时间:
2013-5-8 23:43
兄弟,我研究了半天,可以简单给你解释一下,if或for之后不加{},就只会执行紧跟的一句,if(x < 1)之后,不加{},错不在new IfTest();而是错在 IfTest if中的IfTest。至于具体原因,期待高人解释
作者:
曹睿翔
时间:
2013-5-8 23:54
尹桥印 发表于 2013-5-8 23:23
不得不说这个是个很的好例子。我觉得解释是这样的:
if条件后面必须要跟一个语句,就像而一个块可以作为一 ...
不得不说,你的分析很有道理
作者:
Neverbelazy
时间:
2013-5-8 23:54
尹桥印 发表于 2013-5-8 23:23
不得不说这个是个很的好例子。我觉得解释是这样的:
if条件后面必须要跟一个语句,就像而一个块可以作为一 ...
有些理解了,如果不加{},直接申明一个 例如 int x=0; 一方面是这个变量x根本没有用(刚产生就消失了),另一方面其使用范围也会给人误解(如果不注意也会认为这个变量不是隶属于if),所以不如就不容许这样的定义存在,强迫写一个{ }代码块。
作者:
shiweiCao
时间:
2013-5-9 00:31
我记得我遇到过一个类似的问题,在学习IO流的时候,写出字节流的时候 ,if里面我写了一个变量,没加大括号eclipse提示错误,老师和我写的就这个不同,(老师的执行语句就一句的话,习惯性的没加大括号) 当时老师说的是,这个算是java语法的一种规范,因为我那个局部变量在外面使用不了,所以java干脆就不让我这么写.
所以严格说起来的话,这个属于java语法上的问题吧
作者:
simonqian
时间:
2013-5-9 11:26
{:soso_e102:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2