有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    这意味着:

    int x = someFunction(a, b);
    

    someFunction(a, b)没有任何副作用时,即它不会改变任何东西时,就更清楚了。相反,上面唯一的变化是对x的赋值

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

    int x = a + b;
    

    int x = (a++) + (++b);
    

    因为只有x被分配给。在第二个示例中ab在同一语句中更改

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

    int res = f(a(), b(), c());
    
  2. # 2 楼答案

    这意味着每个表达式一次应该执行一个任务

    考虑以下两个声明:

    int a = 10;
    int b = 20;
    

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

    int c = a + b++;
    

    int c = a + b;
    b++;
    

    JLS更喜欢并推荐后者

  3. # 3 楼答案

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

    请注意代码:

    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

    看起来很扭曲,不是吗