java - 为什么我应该将一个方法定义为整数的另一个变量,而不是java中的数组?

标签 java arrays methods

以下代码:

public static void main(String[] args) {
    int first = 1;
    int second = 2;
    sum(first,second);
    System.out.println(sum);
}
public static int sum(int a, int b){
    int sum = a+b;
    return sum;
}}

将返回错误,我需要编写

int x = sum(first,second);
System.out.println(sum);

并将该方法定义为整数 x 并打印 x。

但是对于数组来说,

public static ArrayList<String> removeLast(ArrayList<String> list) {
//code
return list;
}


public static void main(String[] args) {
    //code
    removeLast(persons);    

    System.out.println(persons);
}

将打印数组的返回值,而不像前一个数组那样定义为另一个数组。

如果问题已被提出,我很抱歉,因为我找不到它。而且我刚刚学习 Java。

最佳答案

数组是通过引用(的值)传递的,因此,方法内数组发生的任何更改实际上都会更改传递给它的数组。另一方面,整数是按值传递的。更改方法内的 int,不会更改传递到方法中的 int。

因此,数组方法中的 return 语句是完全没有必要的。即使您省略了 return 语句,您的代码仍然会更改数组。

但是还有另一个误解需要指出:当您对两个整数求和时,您正在内存中创建一个新值,只要该方法被执行,该值就存在。当 sum 方法完成后,sum int 不再存在。要保留其值,您需要从方法内返回它,并将其分配给调用代码的变量。

关于java - 为什么我应该将一个方法定义为整数的另一个变量,而不是java中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40700524/

相关文章:

java - 如何调用同一个包的另一个类中的方法?

php - 检查类是否在 PHP 中有方法

java - 使用 HTML5 localStorage 在 GWT 应用程序/小部件中缓存

java - 签名 validator 在检查自身时返回 false

java - 使用列表而不是装饰器模式?

javascript - 在循环内连接 html 标签

java - 如何在Java中创建类似于 "dynamic enumerations"的常量分组?

c - 如果我的指针越过数组边界会怎样?

javascript - 如何在不使用过滤方法的情况下根据两个数组的出现次数来比较它们?

c# - 使用 JavaScript/jQuery 从另一个类调用 C# 方法