1.局部变量和成员变量能不能重名?
答案:能
2.局部变量和成员变量声明时必须初始化吗?
答案:不是
解析:使用成员变量时可以不初始化,在进行类加载的时候jvm会自动给它赋默认值
局部变量声明时可以不初始化,但是当使用它时,必须显式地手动给他赋值,否则编译报错
3.若声明了重名的成员变量和局部变量,使用的时候具体使用的是哪个?
答案:就近原则,使用距离使用者最近的那个变量
代码测试:
public class VariableTest {
String s;//成员变量
public static void main(String[] args) {
String s;//局部变量
//以下代码报错,说明当局部变量和成员变量重名时,有一个就近原则(使用的是离它最近的那个变量)
//同时说明局部变量声明时可以不初始化,但是当使用它时,必须显式地手动给他赋值
//System.out.println(s);
VariableTest v = new VariableTest();
v.test();
}
public void test() {
//使用成员变量时可以不初始化,在进行类加载的时候jvm会自动给它赋默认值
System.out.println(s);//结果打印输出null,说明成员变量没有给它赋值,进行类加载的时候jvm会自动给它赋默认值
}
}