我知道有几篇文章解释了Java中的参数传递。我也知道参数是通过值传递的,但值是对象的引用。说我有以下2个方法。
public void append(List<String> list){
list.add("some string");
}
public void incr(int count){
count++;
}
如果我调用第一个方法,则对象list
会被修改,并且修改后的值也会在方法调用之后存在。但是当我调用incr(count)
时,一旦方法调用返回,count
的修改值就会丢失。
为什么在某些情况下,值会被修改,但在另一种情况下则不会?
答案 0 :(得分:-1)
我也知道参数是按值传递的,但值是对象的引用。
这不是java所做的。 Java是按值传递的。如果某些内容是引用类型,那么该引用将按值传递。但这与通过REFERENCE传递不同。因此,在第二个示例中,count变量按值传递,因此您的更改将丢失。