首页 > 解决方案 > 这种解释对于以下后缀增量编码的输出是否正确?

问题描述

我遇到了这个编码......并且只想确认我理解如何接收输出 121。

System.out.print(i++ + obj1.operation(i));

在上面的代码中,i是零,但是i当它作为参数传递给操作方法时变成一。在方法操作中 system.out.print 打印出一个并将后增量值 2 返回到 above system.out.print

在上面的代码中,i 的初始值和方法的返回值 ie 相加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;
    }
}

标签: java

解决方案


public class CalculatorJava {
    public static void main(String[] args) {
        int i = 0;
        CalculatorJava obj1 = new CalculatorJava();
        System.out.print(i++ + obj1.operation(i));
        //In the above statement, the variable i has a value 0, 
        //then it is incremented by 1 and becomes 1, 
        //when passed as an argument in the operation() method.
        //So, it is: print(0 + operation(1))

        //operation(1) returns 2
        //Therefore, the above statement **prints 2**

        //i++ will basically use the initial value of i and 
        //then increment its value by 1

        System.out.println(i);
        //Since i=1, the above statement **prints 1**
    }

    public int operation(int i) {
        //i=1
        System.out.print(i++); 
        //The above statement **prints 1** and then increments the value of i by 1
        //So, it is: print(1), i=1+1=2
        //2 is returned
        return i; 
    }
}

因此,总输出为:121


推荐阅读