i = i++, i = ++i, j = i++, j = ++i 的区别
题目来源牛客网上面练习的一道题目:
package algorithms.com.guan.javajicu; public class Inc { public static void main(String[] args) { Inc inc = new Inc(); int i = 0; inc.fermin(i); i= i ++; System.out.println(i); } void fermin(int i){ i++; } }
这个题目正确的答案是0.
原因是:
- Java使用了中间缓存变量机制:
i=i++;等同于:
temp=i; (等号右边的i)
i=i+1; (等号右边的i)
i=temp; (等号左边的i)
而i=++i;则等同于:
i=i+1;
temp=i;
i=temp;
所以自己写代码测试如下:
public static void main(String[] args) throws InterruptedException {Inc inc = new Inc();int i = 0;i = i++;System.out.println(i);i = ++i;System.out.println(i);}
public static void main(String[] args) throws InterruptedException {Inc inc = new Inc();int i = 0;int j = i++;System.out.println("i = "+i +" j = "+j);j = ++i;System.out.println("i = "+i +" j = "+j);}
对于j = i++等同于
temp=i;
i=i+1;
j=temp;
对于j = ++i等同于
i=i+1;
temp=i;
j=temp;
i = i++, i = ++i, j = i++, j = ++i 的区别相关推荐
- java中j=j++和j=++j的理解
先来看一段程序: public class Test1 {public static void main(String[] args) {int j = 0;for(int i = 0; i < ...
- C语言之int k,j,s; for (k=2;k6;k++,k++)/*for(k=2;k6;k=k+2)*/ {s=1; for(j=k;j6;j++) s+=j; }输出结果为10
#include <stdio.h> int main(){ int k,j,s; for (k=2;k<6;k++,k++)/*for(k=2;k<6;k=k+2)*/ {s ...
- 快速理解j=j++ 和 j=++j(新手入门)
快速理解j = j++ 和 j = ++ j(新手入门): j = j++ ,代码如下: public class TestDemo {/*** @param args*/public static ...
- j++与++j的区别
j++和++j的结果都是+1,但是在指令级的操作模式完全不一样 以下代码输出结果为:0 public static void main(String[] args) {int j = 0;for(in ...
- j = j ++ 和 j = ++ j的区别
今天看到一个题,问下面代码输出来是答案是多少: public class Test {public static void main(String[] args) {int j = 0;for(int ...
- KMP算法原理描述,告诉你为什么要“j = next[j]”
KMP算法原理描述,告诉你为什么要"j = next[j]" 研究KMP算法的起因,是在刷leetcode的 214.最短回文串时,一开始使用了 O ( n 2 ) O(n^2) ...
- 圆心角 圆弧上点坐标_数控加工中心CNC的G02/G03圆弧指令的I、J、与R的区别
G02:顺(CW)圆弧插补 G03:逆(CCW)圆弧插补 根据所选择的X.Y平面,指令格式如下两种: G17 G02/G03 X_ Y_ I_ J_ F_; G17 G02/G03 X_ Y_ R_ ...
- java中j 和 j啥区别_从字节码层次分析++j和j++的区别
一.缘起 最近看到个面试题: int j = 0; for(int i = 0; i <100; i++) j = j++; System.out.println(j); 输出结果是0,如果换成 ...
- make j* make j4 make j8 区别
make -j4是什么意思 看书上说 1) make(1)只衍生一个作业//作业是什么意思?make(1) 是不是就是make的意思? 2) 在双处理器上make -j4,难道是让每个处理器跑两个作业 ...
最新文章
- 模拟请求分页管理中地址转换和缺页中断处理_Linux内存管理:缺页异常(一)
- 企业项目学习准备阶段——Rhel6.5版本无图形虚拟机封装过程及相关配置
- Cisco路由器故障诊断技术专题
- YYDS!怪不得很多朋友去杭州,原来有10W+的福利!
- vs2017中报无法打开包括文件: corecrt.h: No such file or directory
- java 线程安全_Java创建线程安全的方法
- php excel中文名称乱码,phpexcel导出中文文件名乱码的解决办法
- 乐鑫代理-启明云端分享|乐鑫ESP8266模组ESP-WROOM-02D和ESP-WROOM-02U有什么不同
- FFmpeg转OpenCV Mat显示
- lintcode: 把排序数组转换为高度最小的二叉搜索树
- php 不是有效的win32,%1不是有效的 win32应用程序(64位转换32位)
- 10分钟学会python函数式编程
- 非常实用的设计类导航
- 西门子STEP7 OPC SERVER的组态
- 计算机打印怎样添加PDF格式,电脑添加PDF打印机后如何将Excel打印成PDF
- GPC凝胶色谱理论和应用(一)
- VS2010出现“automation服务器不能创建对象“
- openwrt 19 overlay 空间不足_新桥胡同拆除19处违建!背街小巷“瘦身”后宽敞多了...
- 深度学习领域,最惊艳的论文!
- The Book Thief