我遇到了这种编码...只是想确认一下我对输出121的接收方式。
System.out.print(i++ + obj1.operation(i));
在上面的代码中,i
为零,但是i
在作为参数传递给操作方法时变为1。在方法操作中,system.out.print输出一,并将后递增值2返回到system.out.print
以上。在上面的代码中,将i的初始值和方法的返回值相加,即0+2=2
,并打印出2。并且在上述代码中,main方法中的局部变量i已增加为1,因此下一条print语句打印1.这是正确的解释吗?
public class CalculatorJava {
public static void main(String[] args) {
int i = 0;
CalculatorJava obj1 = new CalculatorJava();
System.out.print(i++ + obj1.operation(i));
System.out.println(i);
}
public int operation(int i) {
System.out.print(i++);
return i;
}
}
答案 0 :(得分:0)
在这种情况下,不仅main方法而且操作方法都使用局部变量。因此,我们可以将它们视为两个不同的变量。我们将main中的“ i”称为“ mi”,将操作中的“ i”称为“ oi”。上面代码的简化算法如下:
1: assign 0 to mi
2: increase mi by one
4: assign the value of mi to oi
5: increase oi by one
6: print mi and oi
7: print mi
我假设您知道print方法中的加号不是代数的。
正如您在下面的示例代码中看到的那样,如果我们更改i的范围,则将使两种方法使用相同的变量。输出将是122
而不是121
public class CalculatorJava {
static int i = 0;
public static void main(String[] args) {
CalculatorJava obj1 = new CalculatorJava();
System.out.print(i++ + obj1.operation());
System.out.println(i);
}
public int operation() {
System.out.print(i++);
return i;
}
}