测试一:
public class TestClass {
int i = 47;public void call(){
for (i = 0; i < 3; i++) {
System.out.println(i);
if(i==2){
System.out.println("\n");
}
}
}
public TestClass() {
}
public static void main(String[] args) {
//创建了两个对象
TestClass tc1 = new TestClass();
TestClass tc2 = new TestClass();
tc2.i=60;//tc2的i设置为60
System.out.println("第一个实例的i的值"+tc1.i++);//每一个对象各有一套自己的成员变量,tc1的值不变
tc1.call();
System.out.println("第二个实例的i的值"+tc2.i++);//tc2改变了自己对象的i值
tc2.call();
}
}
结果:
第一个实例的i的值47
0
1
2
第二个实例的i的值60
0
1
2
static可以让多个实例共享一个变量
测试二
public class TestClass {
static int i = 47;
public void call(){
for (i = 0; i < 3; i++) {
System.out.println(i);
if(i==2){
System.out.println("\n");
}
}
}
public TestClass() {
}
public static void main(String[] args) {
//创建了两个对象
TestClass tc1 = new TestClass();
TestClass tc2 = new TestClass();
tc2.i=60;//此时,tc2修改了共享的类变量
System.out.println("第一个实例的i的值"+tc1.i++);//tc1和tc2指向同一个类变量i,所以打印结果为60
tc1.call();//调用完之后i值变为3
System.out.println("第二个实例的i的值"+tc2.i++);//tc2指向的i变为了3,打印出3
tc2.call();
}
}
结果:
第一个实例的i的值60
0
1
2
第二个实例的i的值3
0
1
2