public class Result {
static int b ;
public static void main(String[] args ){
int a = 7 ;
change( a );
change(a );
change(a );
change(a );
}
public static void change( int a ){
b = (b==0)?a:b++ ;
//b++;
System.out.print(b+" ");
//return b ;
}
}
结果:7 7 7 7
但是把b++ 改为 ++b 后,输出就是: 7 8 9 10 ,这是为何?
b = (b==0)?a:b++;
第一次
b = 7;
后面的(情况1)
b = b++;
分解为:
(b++) return b; //返回了 7
(b++) b = b+1; //b变成了 8
b=b++; //b收到第一句的返回7. 最终值没变;
后面的(情况2)
b = ++b;
分解为:
(++b) b = b+1; //b变成了 8
(++b) return b; //++b返回了 8
b=++b; //b收到第二句的返回8. 最终值变了;
如果只是,
调用一句;
b++;
或者;
++b;
达到的效果是一样的;
b++先返回b再把b自增。
++b是先把b自增然后返回b的值