java i++ 和 ++i 深度解析
来源:互联网 发布:linux rpm文件 编辑:程序博客网 时间:2024/06/16 17:52
转:http://blog.csdn.net/never_cxb/article/details/47359761
版权声明:转载请注明出处 博客地址 http://blog.csdn.net/never_cxb
目录(?)[+]
- i 和 i 都能实现1 顺序不同
- i利用了中间缓存变量
- 总结
i++ 和 ++i 都能实现+1, 顺序不同
<code class="hljs cs has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> TestPlus { <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span>(String[] args) { <span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; System.<span class="hljs-keyword">out</span>.println(i++); <span class="hljs-keyword">int</span> j = <span class="hljs-number">0</span>; System.<span class="hljs-keyword">out</span>.println(++j); System.<span class="hljs-keyword">out</span>.println(<span class="hljs-string">"i="</span> + i + <span class="hljs-string">" j="</span> + j); }}</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul>
输出结果为
<code class="hljs matlab has-numbering"><span class="hljs-number">0</span><span class="hljs-number">1</span><span class="hljs-built_in">i</span>=<span class="hljs-number">1</span> <span class="hljs-built_in">j</span>=<span class="hljs-number">1</span></code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>
如上所示:
i++ 是执行完后面的语句, 才加1
++i 就先加1, 才执行后面的语句
i++利用了中间缓存变量
如果 i = i++ 会是什么结果呢
<code class="hljs cs has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> TestPlus { <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span>(String[] args) { <span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i = i++; System.<span class="hljs-keyword">out</span>.println(i); <span class="hljs-keyword">int</span> j = <span class="hljs-number">0</span>; j = ++j; System.<span class="hljs-keyword">out</span>.println(j); }}</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul>
输出为
<code class="hljs has-numbering">01</code><ul class="pre-numbering"><li>1</li><li>2</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a><img src="http://static.blog.csdn.net/images/save_snippets_01.png" alt="" /></a></div><ul class="pre-numbering"><li>1</li><li>2</li></ul>
i++ 有中间缓存变量, i = i++ 等价于
<code class="hljs matlab has-numbering">temp = <span class="hljs-built_in">i</span>;<span class="hljs-built_in">i</span> = <span class="hljs-built_in">i</span> + <span class="hljs-number">1</span>;<span class="hljs-built_in">i</span> = temp;</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a><img src="http://static.blog.csdn.net/images/save_snippets_01.png" alt="" /></a></div><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>
所以 i 不变, 依然是0
<code class="hljs vhdl has-numbering">//Warning: The assignment <span class="hljs-keyword">to</span> <span class="hljs-keyword">variable</span> j has no effectj = ++j;</code><ul class="pre-numbering"><li>1</li><li>2</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div><ul class="pre-numbering"><li>1</li><li>2</li></ul>
<code class="hljs matlab has-numbering"><span class="hljs-built_in">j</span> = ++<span class="hljs-built_in">j</span> 相当于 <span class="hljs-built_in">j</span> = <span class="hljs-built_in">j</span> = <span class="hljs-built_in">j</span> + <span class="hljs-number">1</span></code><ul class="pre-numbering"><li>1</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a><img src="http://static.blog.csdn.net/images/save_snippets_01.png" alt="" /></a></div><ul class="pre-numbering"><li>1</li></ul>
所以编译器警告, 语句的赋值没有作用
总结
++i 没有中间缓存变量, 理论上比 i++ 更加高效
0 0
- java i++ 和 ++i 深度解析
- java i++ 和 ++i 深度解析
- 深度解析前置++i和后置i++的效率
- Java i++和i--
- java ++i 和 i++
- java ++i 和 i++
- java中i++和++i
- java中i++和++i
- Java中的i++和i--
- 【Java工兵】i++和++i
- java中i++和++i
- java中的i++和++i
- java I/O解析
- 关于java中i++,++i和i++ + ++i的问题
- java i++ ++i字节码解析
- Java中i++ 和 ++i的区别
- java i++和++i的区别
- 【java基础】i++和++i的区别 。
- Spring Cache
- 最小二乘法与曲线拟合
- 106 多米诺骨牌(12)119(8)130(9)142(10)150(11)
- jni在Android studio中的配置和使用(一)
- 【codeforces 680 D】【数学+贪心+DFS】【求一个不超过 m 的最大体积 X, 每次选一个最大的 x 使得 x3 不超过当前剩余体积。问在能选最多个数的情况下,X 最大是多少】
- java i++ 和 ++i 深度解析
- java 遍历arrayList的四种方法
- Python wheel /whl 文件包的正确安装
- java中i++和++i
- 顺序表
- 为了保护眼睛,将eclipse背景色调成豆沙绿
- DM&ML_note.6-K-中心点聚类算法
- centos6.5 salt的操作日志写入数据库
- CentOS7配置samba与Windows共享文件