题目来源牛客网上面练习的一道题目:

检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

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 的区别相关推荐

  1. java中j=j++和j=++j的理解

    先来看一段程序: public class Test1 {public static void main(String[] args) {int j = 0;for(int i = 0; i < ...

  2. 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 ...

  3. 快速理解j=j++ 和 j=++j(新手入门)

    快速理解j = j++ 和 j = ++ j(新手入门): j = j++ ,代码如下: public class TestDemo {/*** @param args*/public static ...

  4. j++与++j的区别

    j++和++j的结果都是+1,但是在指令级的操作模式完全不一样 以下代码输出结果为:0 public static void main(String[] args) {int j = 0;for(in ...

  5. j = j ++ 和 j = ++ j的区别

    今天看到一个题,问下面代码输出来是答案是多少: public class Test {public static void main(String[] args) {int j = 0;for(int ...

  6. KMP算法原理描述,告诉你为什么要“j = next[j]”

    KMP算法原理描述,告诉你为什么要"j = next[j]" 研究KMP算法的起因,是在刷leetcode的 214.最短回文串时,一开始使用了 O ( n 2 ) O(n^2) ...

  7. 圆心角 圆弧上点坐标_数控加工中心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_ ...

  8. java中j 和 j啥区别_从字节码层次分析++j和j++的区别

    一.缘起 最近看到个面试题: int j = 0; for(int i = 0; i <100; i++) j = j++; System.out.println(j); 输出结果是0,如果换成 ...

  9. make j* make j4 make j8 区别

    make -j4是什么意思 看书上说 1) make(1)只衍生一个作业//作业是什么意思?make(1) 是不是就是make的意思? 2) 在双处理器上make -j4,难道是让每个处理器跑两个作业 ...

最新文章

  1. 模拟请求分页管理中地址转换和缺页中断处理_Linux内存管理:缺页异常(一)
  2. 企业项目学习准备阶段——Rhel6.5版本无图形虚拟机封装过程及相关配置
  3. Cisco路由器故障诊断技术专题
  4. YYDS!怪不得很多朋友去杭州,原来有10W+的福利!
  5. vs2017中报无法打开包括文件: corecrt.h: No such file or directory
  6. java 线程安全_Java创建线程安全的方法
  7. php excel中文名称乱码,phpexcel导出中文文件名乱码的解决办法
  8. 乐鑫代理-启明云端分享|乐鑫ESP8266模组ESP-WROOM-02D和ESP-WROOM-02U有什么不同
  9. FFmpeg转OpenCV Mat显示
  10. lintcode: 把排序数组转换为高度最小的二叉搜索树
  11. php 不是有效的win32,%1不是有效的 win32应用程序(64位转换32位)
  12. 10分钟学会python函数式编程
  13. 非常实用的设计类导航
  14. 西门子STEP7 OPC SERVER的组态
  15. 计算机打印怎样添加PDF格式,电脑添加PDF打印机后如何将Excel打印成PDF
  16. GPC凝胶色谱理论和应用(一)
  17. VS2010出现“automation服务器不能创建对象“
  18. openwrt 19 overlay 空间不足_新桥胡同拆除19处违建!背街小巷“瘦身”后宽敞多了...
  19. 深度学习领域,最惊艳的论文!
  20. The Book Thief

热门文章

  1. 电脑硬盘速度明显变慢的原因
  2. Innodb存储引擎-idb文件格式解析
  3. JSON.stringify() 详解
  4. 鲁棒性、泛化的解释和区别
  5. 适用于 Android 的 Visual Studio 模拟器
  6. 全像素双核激光对焦拍照是个什么厉害玩意儿
  7. 面向企业级的开源WebGIS解决方案--MapGuide(安装)
  8. 一个领导发给下属的邮件,醍醐灌顶!
  9. Android 自动化测试Monkey、Monkeyrunner
  10. 我开始搞研发管理和项目管理了,发现最难管理的还是人