单项选择(2009.3二级考试)

阅读下列程序

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、变量a未赋值

B、第二个System.out.println(“b = ”+b)语句中,变量b作用域有错

C、第二个System.out.println(“a = ”+a)语句中,变量a作用域有错

D、第一个System.out.println(“b = ”+b)语句中,变量b作用域有错

答案解析

B

【解析】

b是一个局部变量,作用域限于定义的{}内。
变量a未赋初值,也是一个编译错误,但编译器会首先捕捉变量b超范围的错误。

讨论