我是java的新手,我正在编写一些代码来练习,但有些东西我很困惑。我有以下代码:
public class test {
public static void main(String[]args) {
int n = 0;
ArrayList<String> fruits = new ArrayList();
setList(fruits);
n =setInt(9);
// get the values from fruits
for (String value: fruits) {
print(value);
}
}
public static void setList( ArrayList list) {
list.add("pear");
list.add("apple");
list.add("pear");
}
public static int setInt(int number) {
number = 3;
return number;
}
}
我的问题是为什么为了设置我的Arraylist()没有必要返回任何值,但为了设置我的int我需要返回一些东西。如果运行此代码它会打印我的列表中的所有值,但我希望不打印任何东西,因为在我的方法setList中我没有返回任何值。如果我没有使用我的setInt返回任何值,则n的值不会改变,这对我来说是有意义的。 谢谢。
答案 0 :(得分:1)
params在函数中传递的方法有很多种。大多数初学者开始使用的常用方法是按值传递。另一种方式是通过引用传递。在通过引用传递时,对象本身是传入的,而不是传递值的副本。这意味着任何更改都会影响param并保留,即使在调用之后也是如此。 java中的所有对象都是通过引用传递的,只有基元通过值传递。因此,这就是您在使用arraylist对象时不必返回的原因。
编辑:实际上,我犯了一个错误。实际发生的是引用本身的副本正在通过值传递。看看这个。 Everything in Java is Pass by Value.