关于JAVA那点事---i++和++i
对i++和++i 一直有点晕,今天专门抽空来研究相关的知识。
先从简单的说起。
有如下程序:
int i=0;
i=i++;
system.out.print(i);
一眼望去这个结果显而易见是1,但是事实确不是。结果是0.
因为i++是先执行赋值操作,在执行自增操作。
也就是说i=i++ 是先将0赋值给i,然后再自增。那奇怪了,结果也应该是1啊,但是为什么结果还是0呢。
从这个例子,我们来说明第一个,也就是为什么i++赋值给i后,i依然为0.
我个人的理解:
i 在初始化的时候,系统会将 i 指向系统堆栈中为0的地方。
执行i=i++ 时,是先将右边的 i 赋值给i的,也就是说,此时结果没有变。但是之后会执行i++,
但执行完后,结果是1,虽然结果变了,但是指向i的指针依然是堆栈上值为0的那个地址。所以结果为0.
我们再看下面一个复杂的例子。
k=0;
k=k++ + k++ + ++k;
为了方便叙述,等号右边,依次记为K1,K2,K3
程序执行:
1)K1,此时k值没有变,为0.
2)K2, 此时k值依然没有变,为0.但是 因为前面有个++,故此时需要加1.则此时k=1
3)K3,执行完K3时,k=2,但是由于前面有个++,实际k=3
则结果为4.
关于JAVA那点事---i++和++i的更多相关文章
- Java的哪些事
Java的哪些事--------------------------------------------------Java学习分2个方面: Java语法与Java类库 Java: A simple, ...
- Java 编码那些事(二)
建议先阅读:Java 编码那些事(一) 现在说说编码在Java中的实际运用.在使用tomcat的时候,绝大部分同学都会遇到乱码的问题,查查文档,google一下解决方案啥的,都是设置这里,设置那里,或 ...
- 入坑java工程师那些事
最近在知乎上看到好多关于转行做java的朋友,有的在担心学历,有的在想着如何学习java,有的在纠结如何面试.作为一个工作了近10年的java程序员来聊聊我的一些想法,主要从学历.个人能力.工作环境等 ...
- Java这点事
1--代码片段: 1 2 3 4 5 byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6; b6=b4+b5; b3=(b1+b2); System.out ...
- Java Thread 那些事
这篇文章被压在草稿箱许久,最近公司内部的技术社区有同学贴出了几篇分享 Java线程的文章,发觉有很多概念没有讲清楚,所以花点时间继续撰写,便有了这篇博文. 本文只聚焦 JVM 层面的线程模型,不考虑和 ...
- 2017.12.24 Java序列化你不知道的事(二)
1 序列化允许重构 序列化允许一定数量的类变种,甚至重构之后也是如此,ObjectInputStream 仍可以很好地将其读出来. Java Object Serialization 规范可以自动管理 ...
- java异常那些事
异常的基本定义: 异常情形是指阻止当前方法或者作用域继续执行的问题.在这里一定要明确一点:异常代码某种程度的错误,尽管Java有异常处理机制,但是我们不能以“正常”的眼光来看待异常,异常处理机制的原因 ...
- Java——异常那些事
异常的基本定义 异常情形是指阻止当前方法或者作用域继续执行的问题.在这里一定要明确一点:异常代码某种程度的错误,尽管Java有异常处理机制,但是我们不能以“正常”的眼光来看待异常,异常处理机制的原因就 ...
- Java——Java集合那些事
集合概述: 集合和数组都可以保存多个对象,但是数组的长度不可变,集合可以保存数量变化的数据.java中的集合类主要由两个接口派生出,Collection和Map Collection接口和Iterat ...
- Java面试那些事
网址链接:https://mp.weixin.qq.com/s/BkiDwyjua4iwws7gWHwK9Q 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试 ...
随机推荐
- 关于 终端 ls 命令 不能区分文件和目录的问题
默认的,使用ls命令来显示目录内容的时候,“终端”对于目录.可执行文件等特殊类型的文件并没有使用颜色来显示,只有使用“ls -G”时,才能显示颜色,这可真是不方便.有没有方法可以默认显示颜色呢?方法当 ...
- 自动帮助创建android资源xml文件的网站
自动帮助创建android资源xml文件的网站 http://android-holo-colors.com/ stack overflow上一个seekbar的例子: http://stackove ...
- Tengine – Nginx衍生版
Tengine是淘宝在Nginx基础上开发的一个衍生版.官方的简介说针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验. ...
- Ubuntu 下安装 Oracle Java
这只是一篇流水帐,记录如何安装Java. 在Ubuntu 下管理软件很方便,但安装的Java是opensdk.如果在某些条件下,需要安装Sun (Oracle)的Java,则需要自己手工安装. 一般情 ...
- JDBC学习笔记(4)——PreparedStatement的使用
PreparedStatement public interface PreparedStatement extends Statement;可以看到PreparedStatement是Stateme ...
- HDU 5656 CA Loves GCD (数论DP)
CA Loves GCD 题目链接: http://acm.hust.edu.cn/vjudge/contest/123316#problem/B Description CA is a fine c ...
- LoadRunner显示中文乱码的问题
lr_convert_string_encoding Converts a string to a different encoding. Return Values:This function re ...
- ASP.NET项目中引用全局dll
在ASP.NET项目中,有些dll是全局dll,也就是说,没有放在单个项目的引用中.它们一般存放在如下目录C:\Windows\assembly中 这个时候,我们需要在单个项目中引用他们,应该如何做呢 ...
- POJ 3321 Apple Tree (树状数组+dfs序)
题目链接:http://poj.org/problem?id=3321 给你n个点,n-1条边,1为根节点.给你m条操作,C操作是将x点变反(1变0,0变1),Q操作是询问x节点以及它子树的值之和.初 ...
- UVa 1252 Twenty Questions (状压DP+记忆化搜索)
题意:有n件物品,每件物品有m个特征,可以对特征进行询问,询问的结果是得知某个物体是否含有该特征,要把所有的物品区分出来(n个物品的特征都互不相同), 最小需要多少次询问? 析:我们假设心中想的那个物 ...