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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 布德鸟 于 2016-4-30 21:04 编辑

先花30秒思考一个问题 为什么 第一段代码 编译成功,第二段会报错?

if(ture){
        int x;
}

if(ture)
        int x;



好了,不用多想,来看看答案吧。

首先,Java语言规范(JLS)规定:
if语句的定义:if ( Expression ) Statement

是不是意识到了什么? 没错!正如你所想的,局部变量的声明不属于statemen。那我们来看看statement的定义。

Statement包括:
        1. Labeled语句
        2. If语句
        3. If-Else语句
        4. While语句
        5. For语句
        6. 没有跟随子语句的语句:
            6.1 块(即{})
            6.2 空语句
            6.3 Expression语句
            6.4 Assert语句
            6.5 Switch语句
            6.6 Do语句
            6.7 Break语句
            6.8 Continue语句
            6.9 Return语句
            6.10 Synchronized语句
            6.11 Throw语句
            6.12 Try语句

证据确凿,局部变量声明不是一个statement,弄清楚了也就不觉得是什么问题了,不过我们在心里要有一个确切的答案,不能理所当然好像是那样。

*给黑马的建议:黑马java基础教程day03.13里的说明不够准确,希望说明。

参考资料:
为何声明语句不能放在if()的后面?
http://bbs.csdn.net/topics/320093437



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马