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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hpuie0703 中级黑马   /  2016-2-14 10:28  /  2957 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
class Demo1_If {
        public static void main(String[] args) {
                //下面三行代码能否运行正常,为什么?如果运行失败,怎么解?
                /*        int grade1 = 70;
                        if (grade1 >= 60)
                                int x;*/
                        //运行2个错误:需要'.class',不是语句
                        //解决办法:对int x;加上大括号.
                /*        int grade1 = 70;
                        if (grade1 >= 60) {
                                int x;
                        }*/       
        }
}
问题: if的默认控制范围是一个语句,而int x;是一个语句,符合条件,上面的三行代码运行错误?

最佳答案

查看完整内容

首先 int x;不是一个完整语句,if后不加括号允许执行一条语句,但是不能有声明,因为这会涉及作用域,但加了大括号就没有作用域了。这应该和代码块一样理解吧!

7 个回复

正序浏览
int x;是声明的                 if是条件语句,后只有一个语句的时候不能有声明
回复 使用道具 举报
int x;是声明if后只有一个语句的时候不能有声明
回复 使用道具 举报
我来答吧,你加不加大括号,因为你if后面只有一句,所以if都能控制你那句int x;
但问题是 if里面的变量是局部变量,而你的声明int x;既没有赋值也没有运用执行这种书写因此是不能被java接受的,因此设置提示错误
回复 使用道具 举报
int x;是声明,if后只有一个语句的时候不能有声明
回复 使用道具 举报
这是什么。。。。。。。。。。。。
回复 使用道具 举报
int x;同学,你这个就是一个错误啊。 int x ; 不能这样写啊
回复 使用道具 举报
首先 int x;不是一个完整语句,if后不加括号允许执行一条语句,但是不能有声明,因为这会涉及作用域,但加了大括号就没有作用域了。这应该和代码块一样理解吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马