我有两个我不明白的例子
Java将值作为变量传递或通过引用传递
为什么在Ref
类中整数变量不会更改(null)
?
为什么在RefCol
类中修改了集合变量col(1)
?
课程参考:
test(): entero: 5
inicio(): entero: null
class RefCol:
test(): col: [1]
inicio(): col: [1]
import java.util.Collection;
import java.util.Vector;
public class Ref {
public static void main(String[] args){
Ref ref = new Ref();
ref.inicio();
}
public void inicio(){
Integer entero = null;
test(entero);
System.out.println("inicio(): entero: " + entero);
}
public void test(Integer entero){
entero = new Integer(5);
System.out.println("test(): entero: " + entero);
}
}
public class RefCol {
public static void main(String[] args){
RefCol ref = new RefCol();
ref.inicio();
}
public void inicio(){
Collection col = new Vector();
test(col);
System.out.println("inicio(): col: " + col);
}
public void test(Collection col){
col.add( new Integer(1) );
System.out.println("test(): col: " + col);
}
}
答案 0 :(得分:3)
您正在将REFERENCE的COPY传递给对象实例。
如果直接更改对象。例如col.add
它将改变基础对象。
如果更改了它正在引用的对象。例如。 new Integer()
它只会更改局部变量的引用。
答案 1 :(得分:3)
不一样。
entero = new Integer(5);
更改参考entero
,而
col.add(new Integer(1));
更改引用的对象col
。
答案 2 :(得分:-2)
简而言之:原始类型和“原始包装器(整数,长,短,双,浮点,字符,字节,布尔)”不能通过引用进行更改。
答案 3 :(得分:-4)
{ 这里创建的对象将在大括号(})
结束后销毁}