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
的公式是在每次迭代时解析的,还是只得到初始结果只有在使用某种类型的
=
设置变量时,才会解析变量。更改与另一个变量有关系的变量不会更新另一个变量;你必须明确地这样做
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
值没有影响?哦,天哪……我真的希望在锁定之前得到明确的响应……因此基本上,afterresult
值会更改,并且nextResult
值会增加,result
的新值对nextResult
没有任何影响?
a = 1
b = 2;
a = b;