自增变量

自增变量

  1. i++
    先赋值,后自增
  2. ++i
    先自增,后赋值
  3. 注意
    赋值=,最后计算
    =右边的从左边加载值依次压入操作数栈
    实际先算哪个,看运算符优先级
    最后赋值前,临时结果也是存储在操作数栈中

例题

第一题

自增变量

答案:i=4,j=1,k=11
解析如图:

自增变量

第二题

int num = 5;
int ret = num++ * ++num;
答案:ret=35
解析如图:

自增变量

第三题

int num = 5;
++(num++);
Demo7.java:5: 错误: 意外的类型
                ++(num++);
                      ^
解析:

因为(num++)是存在于小括号以内,按照计算优先级处理,首先计算小括号里面的内容,但是因为小括号是一个整体,对外的数据时num++的结果,这是一个常量!!!
自增自减运算符,只能操作变量,不可以操作常量。
语法报错!!!

第四题

int count=0;

for(int i=0;i<100;i++){
count = count++;
}

System.out.println("count="+count);
答案:count=0
解析:

自增变量
首先 count++ 是一个有返回值的表达式,返回值是 count 自加前的值,Java 对自加处理的流程是先把 count 的值(不是引用)拷贝到一个临时变量区,然后对 count 变量加1,接着返回临时变量区的值。

所以上面代码块中第一次循环的执行步骤是 JVM 把 count 值(0)拷贝到临时变量区,然后 count 值加 1,这时 count 的值是 1,接着返回临时变量区的值(值是 0),最后返回值赋值给 count,此时 count 值被重置成 0;所以上面代码语句 count = count++; 可以按照如下代码来理解:

int autoAdd(int count){
int temp=count;

count=count+1;

return temp;

}

自增变量

上一篇:mongodb python


下一篇:高可用Keepalived+MySQL Replication