【问题标题】:Java i++ operation explanation [duplicate]Java i++操作说明[重复]
【发布时间】:2012-07-19 05:06:52
【问题描述】:

可能重复:
What is the difference between a += b and a =+ b , also a++ and ++a?
What is x after “x = x++”?

在 Test1 中,i 将其值增加 1 并返回旧值并将其增量值保留在 i 变量中。但在 Test2 中,我将其值增加 1 并返回其旧值,并且增量也发生了。他们是否为未在 i 变量中分配的增量复制 i 。 Test2中的操作步骤是什么。

测试1

int i = 0;
System.out.print(i++);
System.out.print(i);

输出 01

测试2

int i = 0;
i = i++;
System.out.println(i);

输出 0

【问题讨论】:

  • @Eng.Fouad 这些案例中没有一个真正符合这个
  • 为了自学,请尝试执行“int i = 0; i++; System.out.println(i);”
  • This 你应该会感兴趣

标签: java


【解决方案1】:

i = i++ 语句在 Java 中具有明确定义的行为。首先,i 的值被压入堆栈。然后,变量i 递增。最后,堆栈顶部的值被弹出并分配给i。最终结果是什么都没有发生——智能优化器可以删除整个语句。

【讨论】:

  • 请您解释一下 i++ 操作中发生了什么。
  • i++ 是我的三步过程的前两步:i 的值被保留,然后i 递增。
【解决方案2】:

i = i++; 是一个棘手的构造,它真正的作用类似于以下内容:

int iOld = i;
i = i + 1;
i = iOld;

您只想将i++; 用作独立语句。

【讨论】:

  • 这很奇怪,因为您认为i = i++; 与:i = i = i + 1; 相同。因为 i++ 单独意味着:i = i + 1;然而,这确实解释了为什么i = 0; 保持为 0 的循环并在这样构造时循环永恒。
【解决方案3】:

++ 运算符出现在变量之后时,如您的示例i++,i 的增量发生在操作结束后。 这就是为什么第一个例子中的第一个打印是零,你还没有添加,然后第二个是 1。

第二个例子和保存 i 一样,然后递增它,然后把原来的放回去。

i++

本身就是一个运算符。

您可以用++i 试验第一个,这将在执行打印操作之前增加 i

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 2018-07-22
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2011-04-11
    相关资源
    最近更新 更多