Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 主方法和静态方法中的一元运算符_Java - Fatal编程技术网

Java 主方法和静态方法中的一元运算符

Java 主方法和静态方法中的一元运算符,java,Java,我有以下两个代码,在了解一元操作如何在SOP中工作的过程中,以及主要方法。有人能告诉我“i”的值是如何在main中计算的,以及它何时在static方法中得到 任何细节的背景操作的事情将被赞赏,因为我需要建立一个逻辑,这将帮助我了解其他相关的代码以及 提前感谢你的帮助 class R { static int test( int i) { return i--; } public static void main (String[] args

我有以下两个代码,在了解一元操作如何在SOP中工作的过程中,以及主要方法。有人能告诉我“i”的值是如何在main中计算的,以及它何时在static方法中得到

任何细节的背景操作的事情将被赞赏,因为我需要建立一个逻辑,这将帮助我了解其他相关的代码以及

提前感谢你的帮助

class R
{

    static int test( int i)
    {

        return i--;

    }

    public static void main (String[] args)
    {

        int i=0;
        System.out.println(test(i++));
        System.out.println(i);
        i = 0;
        System.out.println(test(i--));
        System.out.println(test(i));
    }
}
结果:

0
1
0
-1
第二个:

class S
{

    static int test( int i)
    {

        return ++i;

    }

    public static void main (String[] args)
    {

        int i=0;
        System.out.println(test(i++));
        System.out.println(i);
        i = 0;
        System.out.println(test(i--));
        System.out.println(test(i));
    }
}
结果:

1
1
1
0

理解程序行为的关键是要记住,对于基本类型,Java使用按值调用,而不是按引用调用

因此,
test
函数中的名称
i
将不会引用与
main
函数中的名称
i
所引用的值相同的值

以身作则 这里发生的是:

  • i的值增加
    i++
    至1

  • 接下来用旧值i调用
    test
    方法,因此
    test(0)

  • 测试(0)
    的返回值将打印到标准输出

要确定
test(0)
的返回值,请仔细查看
test
方法:

  static int test( int i) {
    return i--;
  }
这里发生的是:

  • 名称
    i
    引用的传入值减少
    i--

  • 返回i的旧值

当传递了
0
的值时,结果返回值为
0
,这是通过以下方式打印的值:

System.out.println(test(i++));
在你的主要方法中。下一行:

System.out.println(i);
将main中名为
i
的值打印到标准输出。作为传递给
test
方法的
i
值的副本,旧值仍然保持不变。因此,编号
1
将打印到标准输出

现在由你决定 通过示例演示了如何使用相同的模式跟踪代码前两个结果的程序流,您应该能够自己解释其他结果。

类“R”中的函数“test”毫无意义: 它总是返回用于调用函数的值。
(由于后减量和按值调用)

感谢您添加解释,这真的很有帮助。
System.out.println(i);