1)
1 public class Operator { 2 3 public static void main(String[] args) { 4 int a=4,b=3; 5 a += b ; //a + b 的值存放到a中 6 a *= b++ ; //a * b的值存放到a中,b加1 7 a *=++ b; //b+1后,再将a*b的值存放到a中 8 } 9 }
2)java的中间缓存变量
1 public class Inc { 2 public static void main(String[] args) { 3 Inc inc = new Inc(); 4 int i = 0; 5 inc.fermin(i); 6 i= i ++; 7 System.out.println(i); 8 9 } 10 void fermin(int i){ 11 i++; 12 } 13 }
输出结果为:0
分析:
Java使用了中间缓存变量机制:
i=i++;等同于:i++是先将i赋值,然后再自增
temp=i; (等号右边的i)
i=i+1; (等号右边的i)
i=temp; (等号左边的i)
而i=++i;则等同于:
i=i+1;
temp=i;
i=temp;
故调用fermin函数不会影响i的值,所以i=0,然后公式i=i++;i的值依然是0,所以程序运行的结果是0。
另外:fermin()方法中,隐含重新定义了一个新的int类型的i,如果要返回此方法的处理结果,必须使用return,这也许就是return存在的必要性。
此处涉及参数的传递,且没有全局变量,还有一种情况是不涉及参数传递但有全局变量,参考本人博客http://www.cnblogs.com/XuGuobao/p/7227535.html