scjp中的一个题目
int   i=0; 
 int   c   =3; 
 int   a[]   =   new   int[5]; 
 a[i]=i=c; 
 求a[5],i,的值; 
 为什么a[0]会等于3呀!而不是a[3]呀!
------解决方案--------------------虽然说赋值语句的执行过程是从右向左,但是a[i]中对于i的评价优先于赋值语句,所以i=0首先被a[i]看到代入,然后再执行i=c,c的值被代入到i中...一般来说死记住这个题型就好了...
------解决方案--------------------执行到这句时,从左到右遇到a[i],将i=0,赋给就是a[0],继续往后扫描,遇到赋值号 "= ",对于赋值的执行顺序是自右向左,先执行最右的赋值将3赋给i,这个语句完了就是a[0]=3;
------解决方案--------------------如果你懂得什么叫Eval and Apply就好了。   
 不过可以这样理解,从左往右Eval每个变量,从右往左Apply每个付值。所以呢:   
 Eval: 
 a[i] ==>  a[0];//0 
 i ==>  i; //0 
 c ==>  c; //3   
 Apply: 
 i = 3; 
 a[0] = 3;