i++和++i的区别

27 篇文章 1 订阅
订阅专栏
12 篇文章 1 订阅
订阅专栏

i++和++i的区别

一、基本概念

两者的作用都是自增加1。
单独拿出来说的话,++i和i++,效果都是一样的,就是i=i+1

    public static void main(String[] args) {
        int i = 0;
        i++;
        System.out.println(i);
    }

image-20231202141829230

    public static void main(String[] args) {
        int i = 0;
        ++i;
        System.out.println(i);
    }

image-20231202141850315

二、++i和i++的区别

单独使用的时候是没有区别的,但是如果当成运算符,就会有区别了!如图所示,我们用a=i++和a=++i举例说明

  1. 先说a=i++,这个运算的意思是先把i的值赋予a,然后在执行i=i+1;

    当i初始等于3时,执行a=i++,最终结果a=3,i=4.

  2. 而a=++i,这个的意思是先执行i=i+1,然后在把i的值赋予a;

    当i初始等于3时,执行a=++i,最终结果a=4,i=4.

    image-20231202142252923

image-20231202142318975

a=i++ , a 返回原来的值a=i,i=i+1;
a=++i , a 返回加1后的值,a=i+1,i=i+1

i++:这是后缀递增运算符,先将当前值赋给变量,然后再递增。

++i:这是前缀递增运算符,先递增变量的值,然后再赋给变量。

也就是i++是先赋值,然后再自增;++i是先自增,后赋值

三、i++和++i那个效率更高

我们写个for循环的小例子来做验证。将这两个类编译后的class通过字节码指令输出到txt中

image-20231202142842133image-20231202142850854

image-20231202142914833

可以看到,main方法开始,从上到下的字节码是完全一样的,没任何不同。

所以,i++ 和 ++i 的效率本质是一样高的。

i++和++i的效率几乎是相同的,因为它们都只做一次增量操作。这两者之间的主要区别在于运算顺序。

在大多数情况下,我们不会注意到这两种方式之间的性能差异。选择使用哪种方式主要取决于你在代码中需要哪种类型的增量操作。但如果我们真要针对性能进行讨论,在某些编程语言(如C/C++)中,由于编译器优化等因素,有时候使用前缀递增(++i)可能会略微快一点, 因为它不需要保留旧值。但是在java中, 这个差异几乎可以忽略不计.
译器优化等因素,有时候使用前缀递增(++i)可能会略微快一点, 因为它不需要保留旧值。但是在java中, 这个差异几乎可以忽略不计.
总结来说, 在java中选择使用哪种形式应更多地基于代码可读性和正确性考虑, 而非执行效率.

从汇编的角度告诉你i++++i的区别
啊渊的专栏
11-12 2191
介绍      i++++i的具体用法以及区别一般来说大部分的程序员都是知道。      i++是先进行运算,运算结束之后i的值再加1。而++i是先先将i的值加1之后,才进行运算。      但是,问道为什么的时候往往又不知道了,今天我们从汇编的角度看看他们的区别。      我使用的是linux系统,因此以
细说i++++i
qq_42151938的博客
08-31 901
文章目录概述字节码探究根究表达式解析习题总结 概述 ​ i++++i的差异,一直是计算机科学的初学者们,最为困惑的难点之一。网上也有很多大佬总结出了一些很有用的方法来区别这两个语句:i++ 是先用后自增,++i 是先自增后用。通过这种方法,我们似乎真的可以在所有出现 i++++i 的地方披荆斩将,但它们的区别仅在于此么? 字节码探究 ​ PS:部分专用术语解释 ​ Java 栈帧:是用于支持虚拟机进行方法调用和方法执行的数据结构。它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部
i++++i
最新发布
qq_61739754的博客
07-03 393
++”是一个复合,相当于给变量进行了加一这样的操作。i++++i就相当于i=i+1.相信这个大家也很容易理解,简单说就是进行了一个小小的简化。
i++++i
weixin_60401853的博客
03-25 1293
i++++i的区别
++i和i++
甜筒八部 的专栏
05-11 2497
++i和i++在效率上有差别。 概念上来说,i++是先将i返回,再把i自增1;而++i是把i自增1,再将i返回。能混用的情况就是单纯地想让i自增1。 对于内置类型的整型int来说,编译器都会直接编译出inc之类的指令,++i和i++没有差别; 但对于自定义类型来说,++i和i++会调用两个不同的operator++重载函数,函数签名分别是: T& T::operator++()和 T T::operator++(int)。++i直接操作原对象,然后返回其引用;i++会先拷贝一个新的对象tmp
Java中i++++i的区别和使用
08-25
Java中i++++i的区别和使用 Java 中的 i++++i 是两个常用的操作符,它们都是对变量进行加 1 或减 1 的操作,但是它们的执行顺序和结果却有着很大的区别。 首先,让我们来了解一下 i++++i 的定义。i++ 是...
java中的i++++i的区别详解
08-18
"java中的i++++i的区别详解" Java中的i++++i是两个非常重要的运算符,它们都是对变量进行自加操作,但是它们的执行顺序和结果却有所不同。 首先, let's 看一下它们的定义: * i++:后加加,先使用变量的当前...
浅析PHP中的i++++i的区别及效率
10-22
总的来说,理解`i++` 和 `++i`的区别对于编写清晰、无误的PHP代码至关重要。尽管它们在大多数情况下可能看起来相似,但在特定情境下可能会导致预期之外的行为。选择哪种操作符取决于你的具体需求,通常是根据代码的...
C++小知识:用++i替代i++
08-26
在编程中,我们经常使用迭代器来遍历数组或容器,但是我们有时候不知道使用前自增运算符(++i)和后自增运算符(i++)的区别。今天,我们来学习这个小知识,了解为什么我们应该使用++i来代替i++。 首先,让我们来看...
(++i)+(++i)+(++i)
热门推荐
judgejames的博客
07-13 11万+
#include<stdio.h>#include<iostream>using namespace std;void main(){    int i = 3;    int x = (++i)+(++i)+(++i);    int y = (++i)+(++i);    cout<<i<<" "<<x<<"
C 中 i++++i 有什么区别
luoganttcc的博客
02-14 429
#include <stdio.h> int main(int argc, char **argv) { int i=1; printf("i++= %d\n",i++); i=1; printf("++i= %d\n",++i); i=1; i=i+1; printf("i=i+1 ,则i= %d\n",i); return 0; } i++= 1 ++i= 2
++ i 和 i++区别
weixin_42617917的博客
03-13 8039
++n 先自增再运算 n++ 先运算再自增 var a, i = 10; a = i ++; //这里i要先赋值,再自加。语句执行后a=10, i = 11; a = ++i; //这里i要先自加,再赋值。语句执行后a=11, i = 11; let i = 9; while( i ++ < 10){console.log(i)}; // 9 ;先执行逻辑逻辑运算,再自增 i = 9 》 i< 10 》i++ 》i =10 while(++ i < 10){console.lo
i++++i是一样的吗?
yanyang42的博客
10-25 1851
在c语言中,我们经常使用i++++i ,可能都会以为它们是一样的,就是对i进行了加1操作。实际上,对于编译器来说它们又意味着什么?会有何不同呢?      之前我都是认为:i++++i都是对i进行了加1操作,唯一有区别的是: i++ :先取i的值,再对i加1 ++i :先对i加1,再取i的值 但是仅仅是这些不同吗?通过下面的一段示例代码,你就会急迫地想知道:编译器到底是如何处
++i与i++区别
壮子大壮子
02-26 483
++i与i++区别 1、++i (i=2) 例:a=++i; 则 a = 3; i =3 解释:这则运算是 现将i自身加1在赋值给a,所以a和i是相等的 2、i++ (i=2) 例:a = i++; 则 a= 2;i=3 解释:这则运算是 现将i赋值给a,自身再加1,所以a比i小 ...
i++++i 区别
09-27
引用中提到,i是先赋值,然后再自增,而i是先自增,后赋值。换句话说,i得到的是进行加法操作前的值的副本,而i直接得到计算后的值。 引用中提到,通过代码模拟的...所以,i和i的区别在于它们执行自增和赋值的顺序。
写文章

热门文章

  • 在VMware上如何创建虚拟机以及安装linux操作系统 4815
  • python爬虫request和BeautifulSoup使用 4387
  • 二、Git安装与配置 3782
  • HCIA---第一天 3195
  • 六、连接查询和子查询 3186

分类专栏

  • JavaWEB 3篇
  • 开发工具 4篇
  • JavaSE 27篇
  • WEB 3篇
  • 知识点总结 12篇
  • MySQL 16篇
  • Git 4篇
  • 案例总结 5篇
  • python 3篇
  • 面试题 1篇
  • RHCSA 13篇
  • HCIA 10篇

最新评论

  • IDEA设置和插件

    CSDN-Ada助手: Java 技能树或许可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java

  • MySql下载和安装

    白话机器学习: 优质好文,博主的文章细节到位,内容干货很多,感谢博主的分享,期待博主持续带来更多好文!

  • 在VMware上如何创建虚拟机以及安装linux操作系统

    m0_64065679: 在第20步,我和你的界面不一样

  • 在VMware上如何创建虚拟机以及安装linux操作系统

    m0_64065679: 问你一个问题

最新文章

  • IDEA设置和插件
  • html电子签名
  • maven下载和安装
2024年1篇
2023年21篇
2022年51篇
2021年10篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王潜山网站优化哪家合适淮南网站优化公司哪家好江阴网站排名优化福州市网站优化渠道临清市网站seo优化排名宜昌网站优化精准获客东莞网站排名优化工具襄阳市网站关键词优化效果戚墅堰网站优化方式镇江网站怎么优化内黄县网站优化哪家的正规鄞州区网站优化方法济源鹤壁网站优化影视网站建设优化潮州做网站优化公司推荐平度网站关键词优化网站标题优化概念商丘网站排名优化哪家服务好镇江比较好的网站品牌优化辽宁铁岭优化网站邛崃如何优化网站平湖电影网站优化贵州网站优化石景山正规网站优化公司最新网站优化登陆优化网站推广哪里好汕头网站排名优化软件网站优化排名金苹果程序沂南临沂网站优化导购返利网站优化方案香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化