情况①:

for (int i = 0; i < 100; i++) {
j = 1 + j++;
}
System.out.println(j);

结果是 0 !! 这是由于在进行后自增/自减(j--  j++)操作的时候,先开辟一块新的内存空间来保存运算之间的 j 值,然后再进行++操作,最后将新的内存空间保存的值赋值给等式的左边。

j = j++ 相当于:
temp = j; // 开辟新的内存空间保存原来的 j 值
j = j + 1; // 进行++操作
j = temp; // 将新内存空间保存的值赋值给等式左边

情况②:

int j = 1;
int x = j++ + (j+2); // 在第三个+之前 j=1, 在第三个+之后 j=2 即 x = 1 + (2+2);
System.out.println(x); // 结果是 5

情况③:

j = 1;
j = ++j + j++; // 相当于 j = 2 + j(此时j=2)++;
System.out.println(j); // 结果是 4

和情况①相同:

j = 2 + j++ 相等于:
temp = j;
j = j + 1;
j = 2 + temp;

情况④:

int j = 1;
j = j++ + ++j + j++ + j++; // j = 1 + 3 + 3 + j(此时j=4)++
System.out.println(j); //结果是11

Java中的自增自减的更多相关文章

  1. 【Java】【4】关于Java中的自增自减

    摘要:理解j = j++与j = ++j的区别:正确用法:直接用j++,不要用前两种 正文: import java.util.*; public class Test{ public static ...

  2. java基础(二) 自增自减与贪心规则

    引言   JDK中提供了自增运算符++,自减运算符--.这两个操作符各有两种使用方式:前缀式(++ a,--a),后缀式(a++,a--).可能说到这里,说不得有读者就会吐槽说,前后缀式都挺简单的,前 ...

  3. 6.Java基础_Java自增自减/关系/逻辑/三元运算符

    /* 自增自减运算符 关系运算符 逻辑运算符 三元运算符 (同C++) */ public class OperatorDemo01 { public static void main(String[ ...

  4. Java中的自增问题(i=i++)

    也许我这是在较真, 但是我们确实有时候就不小心就错写为这种情况了. 看如下代码: public class Test{ public static void main(String[] args){ ...

  5. java中的自增问题

    运行下面这段代码,其结果是什么呢? package com.test; public class Inc { public static void main(String[] args) { Inc ...

  6. java的前缀自增自减和后缀自增自减

    2.前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算. 3.后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算 实例: 实例 public cla ...

  7. C# 中重载自增自减操作符的具体运算原理 ----从C++程序员的角度看C#自增操作符重载的实质

    看了看C#的运算符重载,发现与C++打不相同.刚刚被C#的自增操作符坑了,现在来分享一下. 先定义一个类 class A { public int i; public A(int I) { i = I ...

  8. java中集合的增删改操作及遍历总结

      集合的增删改操作及遍历总结

  9. java中双向链表的增、删、查操作

    import java.util.NoSuchElementException; public class DoublyLinkedListImpl<E> { private Node h ...

随机推荐

  1. Spark SQL 之 RDD、DataFrame 和 Dataset 如何选择

    引言 Apache Spark 2.2 以及以上版本提供的三种 API - RDD.DataFrame 和 Dataset,它们都可以实现很多相同的数据处理,它们之间的性能差异如何,在什么情况下该选用 ...

  2. Linux中级之netfilter/iptables应用及补充

    一.iptables介绍 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常 ...

  3. MyBatis 全局配置文件详解(七)

    MyBatis 配置文件作用 MyBatis配置文件包含影响 MyBatis 框架正常使用的功能设置和属性信息.它的作用好比手机里的设置图标,点击这个图标就可以帮助我们查看手机的属性信息和设置功能.其 ...

  4. BUCK BOOST学习总结

    首先对于我这种电源方面的小白来说 关于电源用的最多的就是线性稳压了 开关类的如  TI 的TPS系列  我是只知道应用电路而不知道具体原理的 但是长此以往也不是个办法 于是今天就带打家详细的来讲一下 ...

  5. Java中生成唯一标识符的方法

    有时候业务需要生成唯一标识符,但又不能依赖于数据库中自动递增的字段产生唯一ID,比如多表同一字段需要统一一个唯一ID,此时我们就需要用程序来生成一个唯一的全局ID. UUID UUID是指在一台机器上 ...

  6. CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等

    CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等 CVPR 2020中选论文放榜后,最新开源项目合集也来了. 本届CPVR共接收6656篇论文,中选1470篇,&q ...

  7. CVPR2020 论文解读:少点目标检测

    CVPR2020 论文解读:具有注意RPN和多关系检测器的少点目标检测 Few-Shot Object Detection with Attention-RPN and Multi-Relation ...

  8. 将代码生成器带入TVM

    将代码生成器带入TVM 为了使数据科学家不必担心开发新模型时的性能,硬件后端提供程序(例如Intel,NVIDIA,ARM等)可以提供诸如cuBLAS或cuDNN之类的内核库以及许多常用的深度学习内核 ...

  9. Linux内存技术分析(下)

    Linux内存技术分析(下) 五.内存使用场景 out of memory 的时代过去了吗?no,内存再充足也不可任性使用. 1.内存的使用场景 page 管理 slab(kmalloc.内存池) 用 ...

  10. leetcode:在 D 天内送达包裹的能力

    链接:https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/ 我是按照这个思路来做的. 如果随便给一个船的运 ...