令人困惑的返回语句[已关闭]

问题描述 投票:0回答:2

尝试将

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

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 methods return
2个回答
0
投票

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

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

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

您甚至不需要变量

x
,该方法可以用一条语句编写:

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

请注意,

test2
是一个非常糟糕的方法名称,因为它没有告诉您有关该方法做什么的任何信息(并且该方法当然不会测试任何内容)。
add2
addTwo
会更好。


0
投票

我在你的代码中留下了评论。 您可以返回数据结构(列表、队列、映射)或文字(如

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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.