程序逻辑错误
- 传入引用但参数的值未改变
public class Main {
public static void main(String[] args) {
Integer a = new Integer(1);
change(a);
System.out.println(a);
}
public static void change(Integer a) {
a = new Integer(2);
}
}
如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的地址,所以不会改变参数的值。