public class HomeWork10 {
public static void main(String[] args) {
Demo d1=new Demo();
Demo d2=d1;
d2.m();
System.out.println(d1.i);
System.out.println(d2.i);
}
}
class Demo{
int i=100;
public void m(){
int j=i++;
System.out.println("i="+i);
System.out.println("j="+j);
}
}
分析上面的输出结果:101,100,101,101;
1.执行main方法:每执行一次方法都会在栈空间中生成一个新的栈(在方法运行后会直接释放掉)2. Demo d1=new Demo();语句:在堆空间中新建一个对象d1; 3. Demo d2=d1;把d1的地址赋值给d2:也可以理解为d1,d2同时指向d1; 4. d2.m();:d2调用方法m此时i=100; ? ? ?? (1)此时 int j=i++; 因为是i++;所以这个时候的j=100;++后才会在堆空间中把 101赋值给i,即 i=101()赋值; ? ? ?? (2)此时打印 ?
System.out.println("i="+i);//i=101;
System.out.println("j="+j);//j=100;
System.out.println(d1.i);//此时d1的i=101
System.out.println(d2.i);//d2的i=101
public class HomeWork10 {
public static void main(String[] args) {
Demo d1=new Demo();
Demo d2=d1;
d2.m();
System.out.println(d1.i);
System.out.println(d2.i);
}
}
class Demo{
int i=100;
public void m(){
int j=++i;
System.out.println("i="+i);
System.out.println("j="+j);
}
}
如果是++i;此时会先执行++;则此时的j=101;然后i=101;结果为:
?
|