java 在if块内不能声明变量?
RT,我这么写会报错:if(true)inta=0;说是此处不允许使用变量声明。但是当我这么写的时候:if(true){inta=0;}就没有任何问题。明明两种写法是一样...
RT,我这么写会报错:
if (true)
int a = 0;
说是此处不允许使用变量声明。但是当我这么写的时候:
if (true)
{
int a = 0;
}
就没有任何问题。明明两种写法是一样的,为什么第一种会报错呢? 展开
if (true)
int a = 0;
说是此处不允许使用变量声明。但是当我这么写的时候:
if (true)
{
int a = 0;
}
就没有任何问题。明明两种写法是一样的,为什么第一种会报错呢? 展开
1个回答
2017-07-12
展开全部
这个很典型的作用域问题,if后如果省略{},那么if只作用于其后面的第一行代码
这时候如果这行代码只是个变量声明语句的话,这个变量是没有其他任何逻辑可以访问到的,因为作用域问题(如果有{},那么声明语句中声明的变量只在这个{}内可用),由于省略了{},作用域有且只有1行,这行代码声明的变量谁也没法访问,这条声明语句就是个废语句,是无效的声明语句,java语法 中严禁出现废语句的,所有废语句都会变成编译错误,不允许出现
类似的比如
public String getName(){
String name = "mike";
return name;
name = "jack";//这条也是废语句,永远不可能被执行到,也会编译不通过
}
声明了变量但在后续的代码里从不用它,语法是允许的,但是声明一个根本没法用的变量就不允许了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询