最简单的方法搞懂java自增(++)和自减(--)(学不会来打我)
sum = c++ + ++c - --d - ++d +1 +c–
我们都知道,在面试或者看别人代码的时候难免会看到这种i++,++i之类的用法,恶心程度可想而知。道理大家都懂,无非就是+1或者-1,但是混在一起就很迷糊,废话不多说,直接看题↑。题目就是标题,问的是sum的值。
这题的条件是这样的:
大家不要一上来就运行代码看答案啊!主要是理解方法。
package operator;
public class operatorDemo1 {
public static void main(String[] args) {
int c = 10;
int d = 5;
int sum = c++ + ++c - --d - ++d +1 +c--;
System.out.println(c);
System.out.println(d);
System.out.println(sum);
}
}
做这之前,记住一个方法就行,哪个在前面就哪个先!
先记录每一次变化的值,以后遇到这种问题都能迎刃而解!
//第一次(最初)
c = 10
d = 5
sum = c++ + ++c - --d - ++d +1 +c-- (不知道)
(这个大家可以用草稿纸写出来,方便理解,也可以自己搞个记事本)
1、先看sum的第一个,c++,心里默念:哪个在前面就哪个先!
。c在前面,所以是先用,再加+。各个值变化记录,每一步(变化)都记下来:
//c从10变成了11
c = 10 11
d = 5
//注意c++是c在前面,所以直接用c(c的初始值是10,所以直接用),c的值再++变成了11。sum就变成了下面:
sum = 10 +++c - --d - ++d +1 +c–
2、继续往下看,到++c 心里默念:哪个在前面就哪个先!
。++在前面,所以是先加+,再用。记录变化:
//++c,所以c先加1,变成12。然后再用,这就是所谓的++c,++在前,先加再用!
c = 10 11 12
d=5
//++c,++在前,先加(11+1=12),再用(12):
sum = 10 + 12 - --d - ++d +1 +c–
3、接着,到- -d。心里默念:哪个在前面就哪个先!
。 - - 在前,所以是先减-,再用。记录变化:
c = 10 11 12
//- -d, - -在前,所以先减,5-1 = 4。减完再给sum用。
d = 5 4
//d减完变成4
sum = 10 + 12 - 4 - ++d +1 + c- -
4、继续看后面的++d。++在前,所以是先加+,再用。
c = 10 11 12
//++d,++在前,所以先加(4+1=5),再用。
d =5 4 5
sum = 10 + 12 - 4 - 5 + 1 + c- -
5、最后一个c - -。再次在心里想着:哪个在前面就哪个先!
。c - -,c在前面,所以先用c,然后c再减。
//先用原来的12,给sum。然后再减,变成11
c = 10 11 12 11
d = 5 4 5
//c - - ,c在前面,所以是先用(原来的12),再减(12-1 = 11)
sum = 10 + 12 - 4 - 5 + 1 + 12
答案就算出来了,c = 11. d = 5. sum = 26。
这个时候再去运行程序:
怎么样,学废了吗?
相关文章
- java并发中CountDownLatch的使用
- java基础—Calendar类方法演示
- java 程序语言中的LinkedList 集合基本方法演示
- java.lang.OutOfMemoryError异常解决方法
- Java Invoked OOM-Killer - OOM不一定是来自于java heap
- Ubuntu安装java的几种方式以及多个JAVA版本的切换
- Eclipse输入Java和XML代码自动提示功能最简单的方法
- Error running 'dt-assets-monitor [clean]': Cannot run program "C:Program Files (x86)Javajdk1.8.0_73binjava.exe" (in directory "E:codedt-assets-monitor")
- Java设计模式之创建型:工厂模式详解(简单工厂+工厂方法+抽象工厂)
- JAVA学习.java.sql.date 与java.util.date以及gettime()方法的分析
- 从测试数据来看Node.js和Java EE的性能区别
- Java容器及其常用方法汇总
- Java MyBatis-Plus 获取自增长id
- 最简单的方法在Centos 7.6操作系统安装JAVA环境
- Java this关键字你真的理解吗?