Is_ever
2019-08-10 18:04
采纳率: 50%
浏览 412

编译报错的问题,局部变量a没有赋初值,为什么没有编译报错?求大神解释下

public class VariableUse{
public static void main(String[] args){
int a;
if(a==8){
int b=9;
System.out.println("a="+a);
System.out.println("b="+b);
}
System.out.println("a="+a);
System.out.println("b="+b);//这行注释后就会报a没有赋初值的错误,但是不注释就只报变量b没有声明的错误
}
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Json-Huang 2019-08-10 19:47
    已采纳

    其实a没有初始化也是有波浪线提示未赋初值,只是ide优先先提示没有定义变量的错误,这就是注释b那行或者先定义b后面也会出现a没初始化原因。

    点赞 打赏 评论
  • 毕小宝 2019-08-11 06:23

    首先,你的疑问的根源其实是由于 System.out.println("b="+b) 打印导致的,因为 b 在 if 的语句块内,是局部变量,外面就访问不到了,当然会报编译错误:变量未定义。
    其次,Java 中变量声明和初始化可以不在一行代码里面,例如,这里 a 先声明后,紧接着赋值就不会报编译错误:

           int a;
            a=sc.nextInt();
    
    点赞 打赏 评论

相关推荐 更多相似问题