i++和++i的区别

i++和++i的区别

一、基本概念

两者的作用都是自增加1。

单独拿出来说的话,++i和i++,效果都是一样的,就是i=i+1

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

二、++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.

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中

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

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

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

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

译器优化等因素,有时候使用前缀递增(++i)可能会略微快一点, 因为它不需要保留旧值。但是在java中, 这个差异几乎可以忽略不计.

总结来说, 在java中选择使用哪种形式应更多地基于代码可读性和正确性考虑, 而非执行效率.

相关推荐
吃着火锅x唱着歌4 分钟前
LeetCode 503.下一个更大元素II
算法·leetcode·职场和发展
小短腿的代码世界7 分钟前
从KB到字节:Qt行情数据压缩与传输优化的全链路透视——LZ4、Snappy与自定义二进制协议的极限压榨
开发语言·qt
_深海凉_8 分钟前
LeetCode热题100-将有序数组转换为二叉搜索树
数据结构·算法·leetcode
我只想困告11 分钟前
day02-RabbitMQ 2026-05-14
java·spring·rabbitmq
KaMeidebaby17 分钟前
卡梅德生物技术快报|单克隆抗体人源化 PEG 修饰质控方法体系构建与验证
服务器·前端·数据库·人工智能·算法·百度·新浪微博
灵机一物23 分钟前
灵机一物AI原生电商小程序、PC端(已上线)-【技术深度解析】Bun 6 天 AI 重写 96 万行代码:从 Zig 迁移 Rust 全流程与行业影响
开发语言·人工智能·rust
Nontee24 分钟前
Java 后端面试题目全集
java·开发语言·面试
lsx20240628 分钟前
CSS 选择器
开发语言
不知名的老吴32 分钟前
二叉树的遍历算法之先序遍历
算法
liu****34 分钟前
第16届国赛蓝桥杯大赛C/C++大学B组
c语言·数据结构·c++·算法·蓝桥杯