Java 表达式包含“quot”意味着什么;最多有一个副作用,作为其最外层的操作;?

Java 表达式包含“quot”意味着什么;最多有一个副作用,作为其最外层的操作;?,java,jls,Java,Jls,在: 当每个表达式最多包含一面时,代码通常更清晰 效果,作为其最外层的操作 它是什么意思?它意味着每个表达式一次只能执行一项任务 考虑以下两项声明: int a = 10; int b = 20; 现在的任务是将这两个ints相加,并将b增加1。有两种方法可以做到这一点 int c = a + b++; 及 JLS更喜欢并推荐后者。这意味着: int x = someFunction(a, b); 如果someFunction(a,b)没有任何副作用,也就是说,它不会改变任何东西,则更清晰

在:

当每个表达式最多包含一面时,代码通常更清晰 效果,作为其最外层的操作


它是什么意思?

它意味着每个表达式一次只能执行一项任务

考虑以下两项声明:

int a = 10;
int b = 20;
现在的任务是将这两个
int
s相加,并将
b
增加1。有两种方法可以做到这一点

int c = a + b++;


JLS更喜欢并推荐后者。

这意味着:

int x = someFunction(a, b);
如果
someFunction(a,b)
没有任何副作用,也就是说,它不会改变任何东西,则更清晰。相反,上面唯一的变化是分配给
x

另一个例子是使用前缀/后缀增量

int x = a + b;

int x = (a++) + (++b);
因为只有
x
被分配给。在第二个示例中,
a
b
在同一语句中被更改

通过限制副作用,您可以更容易地对代码的功能进行推理,和/或对语句调用进行重新排序,包括对它们进行并行化,例如,在下面,如果这些方法没有副作用,那么您可以调用以任意顺序表示参数的方法
a()
b()
c()
,和/或并行

int res = f(a(), b(), c());

表达式的副作用主要是在表达式求值期间对变量赋值

请注意代码:

int x = 5, y = 7;
while ((z = x-- + --y) > 0 ) {
    console.out("What is 'z' now? " + z);
    console.out("How many times will this be printed?");
}
病情评估有3个副作用:

  • 递减
    x
  • 递减
    y
  • 分配给
    z

看起来很扭曲,不是吗?

关于
intx=someFunction(a,b)
:您的意思是,像
int rows=stmt.executeUpdate()
?:-)对这可能是函数可能产生的最大副作用@布里亚纳涅·卢卡斯的例子真的让我很困扰。这意味着java创建者忽略了他们自己的建议。
int x = 5, y = 7;
while ((z = x-- + --y) > 0 ) {
    console.out("What is 'z' now? " + z);
    console.out("How many times will this be printed?");
}