Java i++ 与 ++i

简介: Java i++ 与 ++i

前言



为什么发一篇这么常见的,看上去没有营养的文章?


原因是: 在某个交流群,发现很多人竟然都不清楚..


所以该篇发出来,让刚好点进来看到这篇文章的初学者,加深一下印象。


正文



i++ 先赋值再运算


++i 先运算再赋值


a = i + + ;   先把 i 赋值给 a ,  i再运算 i = i + 1


a = + + i ;  先 i 运算 i = i + 1 , 再把 i 赋值给 a


实例测试1:


    public static void main(String[] args) {
        int a=1;
        int b=1;
        a=a++;
        a=a++;
        a=a++;
        System.out.println("a:  "+ a);  //a:  1
        b=++b;
        b=++b;
        b=++b;
        System.out.println("b:   "+b); //b:   4
        int c=1;
        int d=1;
        c++;
        c++;
        c++;
        System.out.println("c:   "+c); //c:   4
        ++d;
        ++d;
        ++d;
        System.out.println("d:    "+d);//d:    4
    }


实例测试2:


    public static void main(String[] args) {
        int i=1,a=1;
        a=i++;
        System.out.println("a : "+a); //a : 1
        System.out.println("i : "+i); //i : 2
        int j=1,b=1;
        b=++j;
        System.out.println("b : "+b); //b : 2
        System.out.println("j : "+j); //j : 2
    }


那么给正在读该篇文章的你,留下一个简单的问题,下面这段小代码输出的结果是什么?

可以把自己的第一印象想到的结果打在评论上,后面自己再去核实。


image.png


耐心看到这里的小伙伴,我愿意与你们分享一下我对这个 i++ 与 ++i 的 理解方式:


i++


先用后加


++i


先加后用


为什么我描述成 ‘用’ ?


因为在使用这个i++ 和++i 的时候,其实有两种场景,一种是 用 了 变量来接收值;一种是 没用 变量接收值。


用?  先用后加:


       int i=0;
        try {
          i++;
        } finally {
           i++;
        }
        System.out.println( i++);


这里的输出 是 2 。


为什么,就是因为在 输出的时候已经是 在 用的场景了, 所以先用(前面加了2次等于2),所以先用的时候,值就是等于 2.


那么为了验证一哈,是不是  用 再 加  , 所以我在这个输出后,再直接输出多一次:


可以看到第一次输出是2之后,用 的行为结束,执行加。 所以第二次输出是3 。


image.png

相关文章
|
Oracle Java 关系型数据库
Java是什么?
Java是什么?
201 0
|
存储 缓存 运维
JAVA问答12
JAVA问答12
126 0
|
Java 程序员 编译器
java初识
java初识
172 0
java初识
|
Java
Java一些常见的坑
总是觉得自己Java基础还是不行,需要恶补。今天偶然mark了一本《Java解惑》,其中以端程序的方式罗列了95个即常见又不常见的xian(坑)jing(儿),拿来瞻仰一下。
91 0
|
Java
Java常见的坑(二)
你猜上述程序输出的是什么? 是 ABC easy as 123 吗? 你执行了输出操作,你才发现输出的是 ABC easy as [C@6e8cf4c6 ,这么一串丑陋的数字是什么鬼? 实际上我们知道字符串与任何数值的相加都会变为字符串,上述事例也不例外, numbers输出其实实际上是调用了Object.toString()方法,让numbers转变为'[c' + '@' + 无符号的十六进制数。
71 0
《On Java》介绍
经典书籍续集,《On Java》介绍
2014 0
《On Java》介绍
|
人工智能 Java 程序员
6月来了,Java还是第一!
今天是2019年6月1号,栈长祝各位小程序猿们节日快乐。
6月来了,Java还是第一!
Java8-ConcurrentUtils
import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; public class ConcurrentUtils { public static void s...
864 0