Java 这段代码是如何处理的?

Java 这段代码是如何处理的?,java,jvm,int,Java,Jvm,Int,当我运行以下代码时: int n = 20; int result = (n % 2)-1; int nextResult = result + 1; for(int i =0; i < 5; i++) { n += 1; nextResult += 1; System.out.println("\n" + result + "\n" + nextResult); } result和nextResult的公式是在每次迭代时解析的,还是只得到初始结果 如果上述查询的答案是前

当我运行以下代码时:

int n = 20;
int result  = (n % 2)-1;
int nextResult = result + 1;

for(int i =0; i < 5; i++)
{ 
  n += 1; nextResult += 1;
  System.out.println("\n" + result + "\n" + nextResult);
} 
  • result
    nextResult
    的公式是在每次迭代时解析的,还是只得到初始结果

  • 如果上述查询的答案是前者,那么这是jvm的int变量处理的典型情况吗

  • 是否存在相反的情况


  • 只有在使用某种类型的
    =
    设置变量时,才会解析变量。更改与另一个变量有关系的变量不会更新另一个变量;你必须明确地这样做

    int n = 20;
    int result  = (n % 2)-1;
    int nextResult = result + 1;
    
    for(int i =0; i < 5; i++) { 
        n += 1;
        result = (n % 2)-1; //update result because n changed
        nextResult = result + 1; //update nextResult because result changed
        System.out.println("\n" + result + "\n" + nextResult);
    } 
    
    int n=20;
    int结果=(n%2)-1;
    int nextResult=结果+1;
    对于(int i=0;i<5;i++){
    n+=1;
    结果=(n%2)-1;//更新结果,因为n已更改
    nextResult=result+1;//更新nextResult,因为结果已更改
    System.out.println(“\n”+结果+“\n”+下一个结果);
    } 
    
    根据我过去与软件新手的经验,我想我知道OP困惑的根源是什么

    这是一个程序,不是一个数学方程组。这里的关键是程序逐行执行。线路

    int nextResult = result + 1;
    
    这是一项任务;它在该特定时刻获取
    结果
    的值,再加上一个值,然后将该值分配给
    nextResult
    。它不会在result和nextResult之间建立关系,以便后者始终比前者大。在不影响另一个变量的情况下,可以在道路上的某个点将任一变量指定给另一个变量

    例如,这是一个有效的程序:

    a = 1
    b = 2;
    a = b;
    

    如果你把它当作一个方程组,那就是胡说八道。如果您将其视为一系列处理指令—计算右侧,分配给左侧的变量,继续下一行—没有问题。

    是什么阻止您自己回答这些问题?调试您的程序并亲自查看。
    result
    只设置一次,所以它的值永远是一回事。(我不确定您是如何将
    20
    输出的,它应该是
    -1
    )@f1sh我自己运行的。这让我有点难以理解it@4castle因此,即使
    nextResult
    result
    递增之后递增,
    result
    值的更改对
    nextResult
    值没有影响?哦,天哪……我真的希望在锁定之前得到明确的响应……因此基本上,after
    result
    值会更改,并且
    nextResult
    值会增加,
    result
    的新值对
    nextResult
    没有任何影响?
    a = 1
    b = 2;
    a = b;