public class AccessProperty
{
static int i = 47; // 定义静态成员变量
public void call()
{ // 定义成员方法
System.out.println("调用call()方法");
for (i = 0; i < 3; i++)
{
System.out.print(i + " ");
if (i == 2)
{
System.out.println("\n");
}
}
}
public AccessProperty()
{ // 定义构造方法
}
public static void main(String[] args) { // 定义主方法
AccessProperty t1 = new AccessProperty(); // 创建一个对象
AccessProperty t2 = new AccessProperty(); // 创建另一个对象
t2.i = 60; // 将类成员变量赋值为60
// 使用第一个对象调用类成员变量
System.out.println("第一个实例对象调用变量i的结果:" + t1.i++);
t1.call(); // 使用第一个对象调用类成员方法
// 使用第二个对象调用类成员变量
System.out.println("第二个实例对象调用变量i的结果:" + t2.i);
t2.call(); // 使用第二个对象调用类成员方法
}
}
问题:
1.其中t1.i++ 是否等价于 t1.i +1;
2. 为啥结果中t2.i=3?
第一个实例对象调用变量i的结果:60
调用call()方法
0 1 2
第二个实例对象调用变量i的结果:3
调用call()方法
0 1 2
其中t1.i++ 是否等价于 t1.i +1;
对于当前行,是这样的,但是不同于 t1.i +1,这会使得t1.i自己也增加一。相当于 t1.i = t1.i +1
static int i = 47;
因此i是在t1 t2共享的,你调用了call或者t2.i t1.i++等都会导致它被更改。
只是想纠正一下,如果观点不同的话也请忽略。。。
1.其中t1.i++ 是否等价于 t1.i +1; //在此题中t1.i=i;因为是先调用,后自增,不然结果就是61了;
2. 为啥结果中t2.i=3?//原因是调用了call()方法,for循环中将i初始化为0,然后递增到3跳出循环,便就是t2.i=3了
第一个实例对象调用变量i的结果:60
调用call()方法
0 1 2
第二个实例对象调用变量i的结果:3
调用call()方法
0 1 2