JAVA运算符

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

原文地址:https://www.cnblogs.com/XuGuobao/p/7227131.html