局部变量、实例变量和类变量的使用
题目:
public class DifferentVariablesTest {
static int s;
int i;
int j;
{
int i = 1;
i++;
j++;
s++;
}
public void test(int j) {
j++;
i++;
s++;
}
public static void main(String[] args) {
DifferentVariablesTest obj1 = new DifferentVariablesTest();
DifferentVariablesTest obj2 = new DifferentVariablesTest();
obj1.test(10);
obj1.test(20);
obj2.test(30);
System.out.println(obj1.i +" " + obj1.j + obj1.s);
System.out.println(obj2.i +" " + obj2.j + obj2.s);
}
}
以下是考点分析:
public class DifferentVariablesTest {
static int s; // 静态变量
int i; // 实例变量
int j; // 实例变量
{
int i = 1; // 局部变量
i++; // 就近原则,指的是上一行的i
j++; // 其实是this.j
s++; // 其实是DifferentVariablesTest.c
}
public void test(int j) { // 局部变量。涉及到值传递的考点。
j++; // 指的是局部变量j
i++; // 其实是this.j
s++; // 其实是DifferentVariablesTest.c
}
public static void main(String[] args) {
DifferentVariablesTest obj1 = new DifferentVariablesTest();
DifferentVariablesTest obj2 = new DifferentVariablesTest();
obj1.test(10);
obj1.test(20);
obj2.test(30);
System.out.println(obj1.i +" " + obj1.j + obj1.s); // 迷惑作用,这里写法其实不标准,不应该通过类实例访问静态成员
System.out.println(obj2.i +" " + obj2.j + obj2.s);
}
}
// 输出:
// 2 1 5
// 2 1 5