Java之 ++i与i++有什么区别

本文详细解释了Java中前置自增运算符++i与后置自增运算符i++的区别,并通过具体示例展示了两者在不同场景下的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java之 ++i与i++有什么区别

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:MyEclipse10,java
作者: 刘东标
撰写时间:2019-07-24 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在我们编程时,经常会用到变量的自增或自减操作,尤其在循环中用得最多。

例如:
++a(–a) //表示在使用变量a之前,先使a的值加(减)1
a++(a–) //表示在使用变量a之后,使a的值加(减)1
粗略地分析,++a与a++的作用都相当于a=a+1。假设a=4,则:
b=++a; //先将a的值加1,然后赋给b,此时a的值为5,b的值为5
再看看另外一个语法,同样假设a=4,则:
b=a++; //先将a的值赋给b,再将a的值变为5,此时a的值为5,b的值为4

下面我们以自增为例,两种自增方式:前置与后置,即++i和i++,它们的不同点在于i++是在程序执行完毕进行自增,而++i是在程序开始执行前进行自增。

package com.ldb.dao;

public class Bean3 {
    public static void main(String[] args) {
		int i=1;
		System.out.println(i++ + i++);//第一
		System.out.println("i="+i);
		System.out.println(i++ + ++i);//第二
		System.out.println("i="+i);
		System.out.println(i++ + i++ + i++);//第三
		System.out.println("i="+i);
	}
}
输出结果为:3
          i=3
          8
          i=5
          18
          i=8

(1)、表达式 i++ + i++首先执行第一个 i++操作,由于自增操作会稍后执行,因此,运算时 i 的值还是1,但自增操作后,i 的值变为了2,接着执行 i++ ,运算时, i 的值已经为2了,而执行了一个自增操作后,i的值变为了3,所以 i++ + i++=1+2=3,而运算完成后,i的值变为3。

(2)、表达式i++ + ++i首先执行第一个i++,但是自增操作会稍后执行。因此,此时i的值还是3,接着执行++i,此时i的值变为4,同时还要补执行i++的自增操作,因此此时i的·值变为5,所以i++ + ++i=3+5=8。

(3)、同理,i++ + i++ + i++=5+6+7=18。

### Java 中前置自增 `++i` 后置自增 `i++` 运算符的区别Java 编程语言中,前置自增 (`++i`) 后置自增 (`i++`) 是两种不同的自增运算符。尽管两者最终都会使变量增加 1 的值,但在具体行为上存在差异。 #### 单独作为语句时的行为 当这些运算符被单独作为一个语句使用时,它们的效果看起来是一样的——即变量会立即加上 1[^1]。然而,在更复杂的表达式环境中,两者的处理方式有所不同: - **前置自增 (++i)** 当应用于某个整型变量 i 上时,前置自增会在任何其他操作之前立即将该变量的值加 1 并返回新的值用于后续的操作。这意味着如果在一个更大的表达式里使用它,则新值会被用来参进一步计算[^3]。 - **后置自增 (i++)** 对于同样的整型变量 i 来说,应用后置自增意味着当前旧值将首先参到所在上下文中去;只有在整个表达式的求值完成后才会对该变量执行实际意义上的增量动作。换句话说就是先记录下原来的值供后面用到的地方读取,之后再改变这个数本身的大小。 下面通过一段简单的代码来展示这两种形式的具体表现: ```java public class Demo { public static void main(String[] args){ int a = 5; int b; // 使用前置++ b = ++a; System.out.println("After prefix increment: a=" + a + ", b=" + b); // 输出结果应该是: After prefix increment: a=6, b=6 a = 5; // 将 a 重置回原始状态以便比较 // 使用后置++ b = a++; System.out.println("After postfix increment: a=" + a + ", b=" + b); // 输出结果应该是: After postfix increment: a=6, b=5 } } ``` 这段程序展示了如何利用前后缀版本实现相似但有所区别的逻辑控制流程。对于初学者而言理解这一点非常重要,因为这直接影响到了编写高效且无误代码的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值