java的++i和i++的分析
关于自增自减,先来一道题,大家尝试着做一下:
public static void main(String[] args) { int a=2;
int b=a++;
int c=--a;
System.out.println("a:"+a+",b:"+b+",c:"+c);
}
答案在这里:
a:2,b:2,c:2
看完答案,不知道大家有没有什么感觉,再来一道吧:
public static void main(String[] args) { int i=0;
for(int j=0;j<10;j++){
i=i++;
}
System.out.println("i:"+i);
}
下面是答案:
i:0
猜对了吗,如果没猜对,好好想想,你一定会猜对的,什么?你猜对了,
大神啊,那么请大神接招:
public static void main(String[] args) { int i=5;
int j=(i++)+(++i)+(i--)+(--i);
System.out.println("i:"+i+",j:"+j);
}
答案来也:
i:5,j:24
怎么样,有没有什么感觉,别着急,下面是分析:
//i++==> i=6;j=5
//++i==> i=7;j=7
//c--==> i=6;j=7
//--d==> i=5;j=5
//5+7+7+5=24
//6+7+6+5=24
但是有两个24,结果到底是哪一个呢,别急,看完下面的题你就知道答案了:
public static void main(String[] args) { int i=5;
int j=(i++)+(++i);
System.out.println("i:"+i+",j:"+j);
}
这是正确答案:
i:7,j:12
猜对了吗,看我的分析:
//i++==> i=6;j=5
//++i==> i=7;j=7
//6+7=13
//5+7=12
明白了吧 >O.O<
这篇文章说是分析,但其实只是给大家出了几道题,如果大家有什么想法,可以给我留言哦。
java的++i和i++的分析的更多相关文章
- Linux下java进程CPU占用率高分析方法
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- java String.split()函数的用法分析
java String.split()函数的用法分析 栏目:Java基础 作者:admin 日期:2015-04-06 评论:0 点击: 3,195 次 在java.lang包中有String.spl ...
- [转]使用Java Mission Control进行内存分配分析
jdk7u40自带了一个非常好用的工具,就是Java Mission Control.JRockit Misson Control用户应该会对mission control的很多功能十分熟悉,JRoc ...
- 左右c++与java中国的垃圾问题的分析与解决
左右c++与java中国的垃圾问题的分析与解决 DionysosLai(906391500@qq.com) 2014/8/1 问题分析: 之所以会出现中文乱码问题,归根结底在于中文的编码与英文的编码 ...
- 文《左右c++与java中国的垃圾问题的分析与解决》一bug分析
文<左右c++与java中国的垃圾问题的分析与解决>一bug分析 DionysosLai(906391500@qq.com) 2014/10/21 在前几篇一博客<关于c++与jav ...
- [译]Java 垃圾回收的监控和分析
说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Monitoring and Analysi 在这个系列的Java垃圾回收教程中,我们将看到可用于垃圾 ...
- 老李分享:《Java Performance》笔记1——性能分析基础 1
老李分享:<Java Performance>笔记1——性能分析基础 1.性能分析两种方法: (1).自顶向下: 应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会. ...
- Java线程池ThreadPoolExecutor使用和分析(三) - 终止线程池原理
相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...
- java线程池ThreadPoolExector源码分析
java线程池ThreadPoolExector源码分析 今天研究了下ThreadPoolExector源码,大致上总结了以下几点跟大家分享下: 一.ThreadPoolExector几个主要变量 先 ...
- Java 常用List集合使用场景分析
Java 常用List集合使用场景分析 过年前的最后一篇,本章通过介绍ArrayList,LinkedList,Vector,CopyOnWriteArrayList 底层实现原理和四个集合的区别.让 ...
随机推荐
- python3(三十一)metaclass
""" """ __author__ = 'shaozhiqi' # 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而 ...
- 如何使用npt结合crontab实现集群之间的时间同步
当我们每个机器的时间都不一致时,假如有一个定时任务,定的10点启动执行.结果namenode十点了启动任务,可是分配到的执行节点DataNode才九点五十导致任务执行失败怎么办?这就需要将机器之间的时 ...
- 在Sping的配置文件中,关于dataSource的配置,就我们常用的方法大致可以有三种:
在Sping的配置文件中,关于dataSource的配置,就我们常用的方法大致可以有三种: 1.一般的配置方法,直接在配置中指定其值.具体的例子我们参照Mysql的配置如下: <bean id= ...
- 加锁的位置 (eq:map<key,map<>> 双集合 怎么 只加锁 在用到的对象位置,而不是把整个集合锁住)
比如上边的map里套map 定义变量为data,例如组队副本 npc 为1 下有众多房间 即Map<1,<roomId,room>> ,处于多线程下,一个线程在 npc为1的下 ...
- G - Greg and Array CodeForces - 296C 差分+线段树
题目大意:输入n,m,k.n个数,m个区间更新标记为1~m.n次操作,每次操作有两个数x,y表示执行第x~y个区间更新. 题解:通过差分来表示某个区间更新操作执行的次数.然后用线段树来更新区间. #i ...
- 小L的直线
小学时期的小L发现自己很有艺术细胞,于是买了一块画板,但是他的绘画水平使得他只能连接两点画出一条线段.有一天他决定在一张有n个点的图上作画,即他可以把这n个点任意连接.大家认为平行线是非常不美观的,于 ...
- pyinstaller打包
参考 官网:http://www.pyinstaller.org/ pyinstaller参数使用 使用spec文件 安装 Windows依赖pypiwin32,新版的pyinstaller已经包含了 ...
- selenium 键盘鼠标模拟
一.键盘模拟常用的键 sendKeys(Keys.BACK_SPACE); //删除键--Backspace sendKeys(Keys.SPACE); //空格键 Space sendKeys ...
- Python 七步捉虫法
了解一些技巧助你减少代码查错时间. -- Maria Mckinley 在周五的下午三点钟(为什么是这个时间?因为事情总会在周五下午三点钟发生),你收到一条通知,客户发现你的软件出现一个错误.在有了初 ...
- 模糊字符串匹配:FuzzyWuzzy
FuzzyWuzzy 模糊字符串匹配,它使用Levenshtein Distance来计算简单易用的包中序列之间的差异. 前置条件 Python 2.7 or higher difflib pytho ...