情景1:
public class test{ int a = 1; public test(){ if(true){ int a = 2; System.out.println(a); } System.out.println(a); } public static void main(String[] str){ test t = new test(); } }
输出结果为:
2
1
解释:两个a不是同一块内存。
情景2:
public class test{ public test(){ int a = 1; if(true){ int a = 2; System.out.println(a); } System.out.println(a); } public static void main(String[] str){ test t = new test(); } }
编译出错,a重复定义。
情景3:
public class test{ public test(){ int a = 1; if(true){ a = 2; System.out.println(a); } System.out.println(a); } public static void main(String[] str){ test t = new test(); } }
输出结果:
2
2
解释:a是同一块内存,第一次被赋值为1,被赋值为2之后,原来的值被覆盖。