java 在if块内不能声明变量?

RT,我这么写会报错:if(true)inta=0;说是此处不允许使用变量声明。但是当我这么写的时候:if(true){inta=0;}就没有任何问题。明明两种写法是一样... RT,我这么写会报错:
if (true)
int a = 0;
说是此处不允许使用变量声明。但是当我这么写的时候:
if (true)
{
int a = 0;
}
就没有任何问题。明明两种写法是一样的,为什么第一种会报错呢?
展开
 我来答
匿名用户
2017-07-12
展开全部

这个很典型的作用域问题,if后如果省略{},那么if只作用于其后面的第一行代码

这时候如果这行代码只是个变量声明语句的话,这个变量是没有其他任何逻辑可以访问到的,因为作用域问题(如果有{},那么声明语句中声明的变量只在这个{}内可用),由于省略了{},作用域有且只有1行,这行代码声明的变量谁也没法访问,这条声明语句就是个废语句,是无效的声明语句,java语法 中严禁出现废语句的,所有废语句都会变成编译错误,不允许出现

类似的比如

public String getName(){
    String name = "mike";
    return name;
    name  = "jack";//这条也是废语句,永远不可能被执行到,也会编译不通过
}

声明了变量但在后续的代码里从不用它,语法是允许的,但是声明一个根本没法用的变量就不允许了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式