请问这个程序的输出结果是什么?为什么?

img

输出结果为:

i + j is 23
k is 5
j is 3

原因如下:

public class Foo {

    static int i = 0;
    static int j = 0;

    public static void main(String[] args) throws IOException {
        int i = 2;
        int k = 3;
        int j = 3;
        // i,j 在方法中定义了,因此 i 的取值为 2,j 的取值为 3,字符串从前到后一次拼接
        System.out.println("i + j is " + i + j);
        // k 的值为 i + j = 2 + 3 = 5
        k = i + j;
        System.out.println("k is " + k);
        // j 的值为方法中定义的局部变量 3
        System.out.println("j is " + j);
    }
}

23
5
3

3 4 两行是静态变量,在此方法中并没有使用到 变量使用就近原则,main方法内部有 i 和 j变量了