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