我想知道为什么这段代码会给出输出112
最后一个数字2
是如何创建的?
public static void main(String[] args) {
int i = 0;
System.out.print(++i);
System.out.print(i++);
System.out.print(i);
为什么会这样?
我想知道为什么这段代码会给出输出112
最后一个数字2
是如何创建的?
public static void main(String[] args) {
int i = 0;
System.out.print(++i);
System.out.print(i++);
System.out.print(i);
为什么会这样?
你的片段被翻译为
int i = 0;
i = i + 1; // 1
System.out.print(i); // 1
System.out.print(i); // 1
i = i + 1; // 2
System.out.print(i); // 2
这就是为什么最终结果是2。
++i
它在被 print 方法调用之前i++
递增变量,并在方法执行之后递增变量。
i++
是后自增运算符,它的表达式值是 的旧值i
,但是是自增的副作用i
。值为1
,但它的叶子i
变为2
。
当我们使用 post 或 pre increment 运算符时,它会增加值。
后自增运算符 ( i++
) 先赋值,然后再自增。预递增运算符 ( ++i
) 先递增,然后赋值。他们都表现得像这样:
int i=0;
i=i++;
System.out.println(i); //1
i=++i;
System.ou.println(i); //1
当此代码运行时:
public static void main(String[] args) {
int i = 0; //i=0;
System.out.print(++i); // increments i to i=1, and prints i
System.out.print(i++); // prints i and then increments it to i=2
System.out.print(i); // prints i, i.e. 2
}
您在 上应用两个增量i
。初始值为 0,因此经过两次增量 (++i
和i++
) 后,它将变为 2。
i++
和都++i
将 的值加i
一。
它们类似于
i = i+1;
但是++i
一个增加 的值i
然后使用它,所以0
变成1
并打印出来,而第i++
一个使用该值,然后增加 的值i
,所以打印的值是1
,然后它变成2
因此最后一个数字(的最终值 i
)是2.
简单地;
在后增量中,增量是在读取变量后完成的。
在预增量中,变量值首先递增,然后在表达式中使用。
i 最初是 0,然后它是预先递增并打印的,所以你有第一个 1,然后再次打印它,你有第二个 1,然后后递增,然后最后一次打印,你有 2