对于java的自增运算符,很多人和博主一样也是初学时各种懵,直到学完后还是半蒙半懂的状态,对于单独使用基本上大家都会,但是遇到赋值使用以及参与运算等其他情况可能不运行的话没有百分百的把握看完代码就肯定的说出执行结果。
博主总以为自己弄懂了自增的玩法,但是还是容易忘,弄混淆,这里就当做记一个笔记了。由于自减其原理和自增一样,这里只讲自增。
赋值表达式运算
咱们先来看一个后置++的赋值使用example:
package com.yfx.entity;
/**
* @Author: Suk
* @Description: 自增运算规则的测试类
* @Date:Created in 17:01 2019/10/2
* @Modified By:
*/
public class AutoIncrementTest {
public static void main(String[] args) {
assignmentOperation();
}
/**
* 自增的赋值操作
*/
public static void assignmentOperation() {
//定义一个int类型的初始化值
int num = 10;
//让其后置自增然后赋值给本身
num = num++;
//打印赋值后的num
System.out.println(num);//这里打印的num结果是10,而并不是11。
}
}
然后我们换成前置++↓
package com.yfx.entity;
/**
* @Author: Suk
* @Description: 自增运算规则的测试类
* @Date:Created in 17:01 2019/10/2
* @Modified By:
*/
public class AutoIncrementTest {
public static void main(String[] args) {
assignmentOperation();
}
/**
* 自增的赋值操作
*/
public static void assignmentOperation() {
//定义一个int类型的初始化值
int num = 10;
//让其前置自增然后赋值给本身
num = ++num;
//打印赋值后的num
System.out.println(num);//这里打印的num结果是11
}
}
为什么会这样呢?很多初学者看到第一个时肯定第一反应就是打印的num是11,我们都知道后置++是先赋值后自增,所以赋值后num肯定是10,然后表达式执行完毕,num+1变成11,所以打印的肯定是11,博主一开始测试时也是这么想,但结果瞬间打脸,所以博主认为,在表达式中,特别是赋值运算,如果后置++赋值给左边的变量就是它自己本身,那么赋的值就是它本身未自增的值,而且赋值语句执行完毕后,它自身也不会再自增,前置++也同理,但是如果不是自己本身而是另外一个变量进行后置++然后赋值给num,那么=右边执行赋值语句完毕后就会自身+1,也就是下面这种情况↓
package com.yfx.entity;
/**
* @Author: Suk
* @Description: 自增运算规则的测试类
* @Date:Created in 17:01 2019/10/2
* @Modified By:
*/
public class AutoIncrementTest {
public static void main(String[] args) {
assignmentOperation();
}
/**
* 自增的赋值操作
*/
public static void assignmentOperation() {
//定义一个int类型的初始化值
int num;
//定义一个int类型的临时自增变量
int tempNum = 10;
//让tempNum后置自增然后赋值给num
num = tempNum++;
//打印赋值后的num
System.out.println(num);//这里打印的num结果是10
//打印自增后的tempNum
System.out.println(tempNum);//这里打印的num结果是11
}
}
所以我们在给一个变量后置++然后又赋值给其自己本身时,赋的值是未自增的值,也就是原本的值,并且赋值表达式语句执行完毕后,=右边的自增也不会再给赋值后的变量num+1。
自增自减参与运算
很多初学者在参与运算的时候也容易混淆,博主到现在都经常弄错,尤其是表达式比较复杂的时候,所以觉得有必要记录一下做个笔记,下面用一个包含了前置和后置的复杂运算进行举例,代码如下↓
package com.yfx.entity;
/**
* @Author: Suk
* @Description: 自增运算规则的测试类
* @Date:Created in 17:01 2019/10/2
* @Modified By:
*/
public class AutoIncrementTest {
public static void main(String[] args) {
// assignmentOperation();
autoIncrementOperation();
}
/**
* 自增自减的混合运算
*/
public static void autoIncrementOperation() {
//定义两个int类型的整数
int firstNum = 11;
int secondNum = 22;
//对其使用自增自减进行混合运算
int result = ++firstNum + secondNum-- - firstNum++ + ++secondNum - --firstNum;
System.out.println(result);//打印的最终运算结果为32
}
对于有些初学者来说,如果没学好的话可能和博主一样会这么算↓
正确的运算是这样执行的,下面我画个图便于理解↓
如图所示,在这种混合运算中,有后置自增或者自减的变量的话,实际上参与到运算的是它未自增之前的值,而如果后面还有调用到它进行自增或自减的话那么取的值是它自增后的值再进行自增或者自减,后面还有的话就以此往后类推。
希望能够帮助到正在学习se基础语法的朋友们摆脱混淆。