为什么80%的码农都做不了架构师?>>>   

我知道网上有很多这样的文章了,在这我只是想记录一下,总结一下,就当备忘录吧。

一、什么区别?

1、i++ 先运算再加一,++i先加一再运算

2、i++ 有中间变量,++i 没有,理论上++i 相对运行快点

二、代码(代码里有详细的解释)


/*** 总结:i++ 最终去相加的都是中间变量 temp,请看例子* @author tingliu* @create 2017-12-19 11:11**/
public class PlusTest {@Testpublic void test() {String[] k = new String[2];int i = 0;while (i < 2) {k[i++] = "d";System.out.println(k);}}/*** i = i++ 等价于* temp = i;* i = i + 1;* i = temp* 总结:i++ 有中间缓存变量* <p>* //Warning: The assignment to variable j has no effect* j = ++j 相当于 j = j = j + 1* 所以编译器警告, 语句的赋值没有作用* <p>* ++i 没有中间缓存变量, 理论上比 i++ 更加高效*/@Testpublic void test1() {int i = 0;i = i++;System.out.println(i);int j = 0;j = ++j;System.out.println(j);int k = 0;k++;System.out.println(k);}@Testpublic void test2() {int i = 0;for (int j = 0; j < 10; j++) {/**temp=i;i=temp+1;i=temp;*/i = i++;}System.out.println("i的最后结果" + i);}@Testpublic void test3() {int i = 3;int count = (i++) + (i++) + (i++);//count=3+4+5,你可以用count=(i++)+(i++);这时会等于7System.out.println(i);//i=6System.out.println(count);//count=12int j = 3;count = (++j) + (++j) + (++j);//count=4+5+6System.out.println(j);//j=6System.out.println(count);//count=15}@Testpublic void test4() {/*** a++ 等价于* temp=a // temp =0* a=temp+1 // a=1** ++a 等价于* a=a+1 // a=2** 所以 a++ + ++a 的过程:* temp=a // temp =0* a=temp+1 // a=1* a+1   // a=2* 最终就如下*  temp+a=0+2=2*/int a = 0, b = 0;b = a++ + ++a; //0+2=2System.out.println("a:" + a);System.out.println("b:" + b);int a1 = 0, b1 = 0;b1 = ++a1 + a1++; //1+1=2System.out.println("a1:" + a1);System.out.println("b1:" + b1);}@Testpublic void test5() {/***  c=0*  temp=c // temp =0*  c=temp+1 // c=1*  c=c+1 // c=2**  temp+c=0-2=-2*/int c = 0, d = 0;d = c++ - ++c; //0+2=2System.out.println("d:" + d);int i = 0;i = i++ + ++i; //0+1+1=2int j = 0;j = ++j + j++ + j++ + j++;// 1+1+2+3=7int k = 0;k = k++ + k++ + ++k;// 0+1+2+1=4int h = 0;h = ++h + ++h; // 1+2=3int p1 = 0, p2 = 0, q1 = 0, q2 = 0;q1 = ++p1;// p1=1 q1=1q2 = p2++; // p2=1 q2=0System.out.println("i:" + i);System.out.println("j:" + j);System.out.println("k:" + k);System.out.println("h:" + h);System.out.println("p1:" + p1);System.out.println("p2:" + p2);System.out.println("q1:" + q1);System.out.println("q2:" + q2);}
}

代码地址:https://github.com/tingliu9/basic-test/blob/master/src/test/java/com/github/tingliu/basic/test/PlusTest.java

文中有些是摘抄别人的,但是忘记出处了。还望见谅

转载于:https://my.oschina.net/huangy/blog/1606619

java 的 i++ 和 ++i 的区别相关推荐

  1. java aes php_php和java的aes默认加密算法有点区别及解决方法。

    1.php和java的aes默认加密算法有点区别,php能解密java加密的密文,但java不能解密php加密的密文.原因在于: 1.Java中AES加密与解密默认使用AES/ECB/PKCS5Pad ...

  2. java char的包装对象,Java 从Character和char的区别来学习自动拆箱装箱

    本文结构 1.Character和char 的区别: 2.自动拆箱装箱java 1.Character和char 的区别: Character是类,char基本数据类型.数组 在java中有三个类负责 ...

  3. c语言 python-C语言、Java语言和python语言的区别在哪里

    原标题:C语言.Java语言和python语言的区别在哪里 我们经常听到C语言.Java语言和python语言,那么这三者的区别在哪里呢?随着科技的进步以及新技术的推进,编程语言的种类也是越来越多,随 ...

  4. 1.8 Java字节流和字符流的区别,如何区分输入流和输出流?

    Java字节流和字符流的区别 首先我们先大概总结一下前面学习的内容,可分为以下几点: 以 Stream 结尾都是字节流,Reader 和 Writer 结尾都是字符流. InputStream 是所有 ...

  5. java中的异常种类和区别以及处理机制和区别

    java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...

  6. java中ArrayList和LinkedList的区别

    首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...

  7. Java基础之equals和==的区别深入解析

    Java基础之equals和==的区别深入解析 以下是本文目录大纲 equals 和 == 的区别 equals 的重写 复写hashCode方法,有31这个数字的作用 1. equals 和 == ...

  8. java中Runnable和Callable的区别

    文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...

  9. java中wait和sleep的区别

    文章目录 Wait和sleep的区别 唤醒wait和sleep java中wait和sleep的区别 在本篇文章中,我们将会讨论一下java中wait()和sleep()方法的区别.并讨论一下怎么使用 ...

  10. java throw与throws_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

最新文章

  1. debian 10 ssh简单配置
  2. seci-log1.02日志分析软件版本升级了
  3. 一键托管,阿里云全链路追踪服务正式商用:成本仅自建1/5或更少
  4. Map集合使用get方法返回null抛出空指针异常问题
  5. 大数据_Hbase-API访问_Java操作Hbase_MR-数据迁移-开发代码---Hbase工作笔记0016
  6. 苹果笔记本调整 pycharm 字体大小的地方
  7. CentOS7.3下部署Rsyslog+LogAnalyzer+MySQL中央日志服务器
  8. android中播放gif动画之三
  9. 哔哩哔哩服务器在哪个文件夹,哔哩哔哩在手机哪个文件夹
  10. gmx grompp
  11. 开学送礼最佳选择,有名的蓝牙耳机推荐
  12. BMT硬件之ADC(一):转换参数——INL_DNL
  13. 50个启发你灵感的黄色系网站设计
  14. [luogu] P1637 三元上升子序列 树状数组
  15. Ubuntu GitLab仓库服务器搭建 No command ‘deb‘ found, did you mean(转载)
  16. HTML+CSS案例展示(CSS3D效果旋转相册)
  17. JAVA数据结构--Arraylist
  18. 2021年广东省雷州市客路镇高考成绩查询,雷州市客路镇隆重召开庆祝第31个教师节暨表彰大会...
  19. 总结最近遇到的几个问题
  20. 教你如何用Python追踪快递信息

热门文章

  1. 效率达CPU一万倍的神经形态芯片发布后,英特尔引发了多方吐槽
  2. 企业级 SpringBoot 教程 (十二)springboot集成apidoc
  3. glide等图片缓存框架替换缓存图片解决方案
  4. 第十七课:js数据缓存系统的原理
  5. 使用Kickstart+Apache+Dhcp+Pxe无人值守安装操作系统
  6. flex air openWithDefaultApplication 时出现Illegal ...
  7. FD.io/VPP — 常用指令集合
  8. Python 编程系列
  9. Linux_正则表达式
  10. .net的垃圾回收机制[转]