令人困惑的退货声明 [已关闭]

Confusing return statment [closed]

提问人:Noob 提问时间:11/17/2023 最后编辑:Mark RotteveelNoob 更新时间:11/18/2023 访问量:73

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

2天前关闭。

尝试从方法传递到另一个方法,然后在打印之前对其进行求和。 该程序运行良好,但第 8 行让我感到困惑。我需要对此代码进行简要分析,这是我在遵循 IDE 的错误警告后获得的xmain

1 package tttt;
2
3 public class Class {
4
5   public static int test() {
6
7       int x = 1;
8       return test2(x);
9
10  }
11
12  public static int test2(int a) {
13       a += 2;
14       return a;
15
16  }
17 }
package tttt;

public class fff {

    public static void main(String[] args) {
    
    
        System.out.println(Class.test());
    }

}
Java 方法 返回

评论

8赞 experiment unit 1998X 11/17/2023
它如何让你感到困惑?
0赞 experiment unit 1998X 11/17/2023
对我来说看起来不错,x=1 -->a=1 -->a=a+2 -->a=3 -->return a --> return test2(x) --> println(Class.test())
0赞 Jean-Baptiste Yunès 11/17/2023
x=1 ==> test2(1) ==> a=1 ==> a=3 ==> return 3 ==> return 3。
0赞 Arfur Narf 11/17/2023
您了解方法调用是什么样子的吗?
0赞 Noob 11/18/2023
感谢您的回复,我仍在努力理解为什么test2(x);单打独斗是行不通的,这里什么是返岗?

答:

0赞 knittl 11/17/2023 #1

return返回表达式的结果。表达式可以是变量、文本或方法调用(或其中任何一个的组合)。

您的代码片段更短,但在其他方面 100% 相同:

public static int test() {
  int x = 1;
  int result = test2(x);
  return result;
}

你甚至不需要这个变量,这个方法可以用一个语句来编写:x

public static int test() {
  return test2(1);
}

请注意,这是一个非常糟糕的方法名称,因为它没有告诉你任何关于该方法的作用(而且该方法当然不会测试任何东西)。 或者会更好。test2add2addTwo

评论

0赞 Arfur Narf 11/17/2023
一个小问题:我认为如果你说“返回任何表达式的值”会更清楚。或“返回结果...”。
0赞 Vladislav Utkin 11/18/2023 #2

我在你的代码中留下了注释。 您可以返回有关数据结构(List、Queue、Map)或文本(如 )的链接。Numbers

1  package tttt;
2
3  public class Class {
4
5    // The main method named 'test'
6    public static int test() {
7
8        // Declare and initialize a variable 'x' with the value 1
9        int x = 1;
10
11       // Call the method 'test2' with the argument 'x' and return its result
12       return test2(x);
13
14   }
15
16   // Another method named 'test2' with an integer parameter 'a'
17   public static int test2(int a) {
18       // Increment the parameter 'a' by 2
19       a += 2;
20
21       // Return the modified value of 'a'
22       return a;
23
24   }
25 }

当您传递作为数组的变量的值时,会出现所有差异;变量的值成为对原始数组的引用。如果在另一个方法中将其修改为参数,则将更改原始数组。

class Main {
    public static void main(String[] args) {
        int[] d = Class.test();
        
        for (int i : d){
                System.out.println(i); /// 1, 2, 10
        }
    }
}

class Class {
    public static int[] test() {
        int[] x = {1, 2, 3};
        test2(x);
        return x;
    }

    public static void test2(int[] a) {
        a[2] = 10;
    }
}