繁体   English   中英

该说明是否正确用于以下后缀增量编码的输出

[英]Is this explanation correct for the output of the following postfix increment coding

我遇到了这种编码...只是想确认一下我对如何接收输出121的了解。

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

在上面的代码中, i为零,但是当将其作为参数传递给操作方法时, i变为一。 在方法操作中,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;
    }
}

在这种情况下,不仅主要方法而且操作方法都使用局部变量。 因此,我们可以将它们视为两个不同的变量。 我们将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;
    }
}

进一步阅读: 局部变量和范围

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM