关于Java值传递和引用传递的特性需要注意的是在方法调用那块传入参数对原值是否修改的问题,基本类型都是值传递:public class Boy {
private int size;
private String[] position;
public void addSize(int size) {
size++;
}
public static void main(String[] args) {
Boy me = new Boy();
int mySize = 18;
System.out.println(mySize+"cm");
me.addSize(mySize);
System.out.println(mySize+"cm");
}
}两次输出都是18,因为mySize作为方法参数时,会复制一份值在方法内操作,方法操作mySize时不影响原来的值。而对象作为方法参数时是引用传递,顾名思义,拷贝了一份引用到方法里面进行操作,两个引用指向的是同一实例,所以修改引用的值会造成原实例的值被修改。public class Boy {
private int size;
private String[] position;
public void addSize(Boy boy) {
boy.size++;
}
public void setSize(int size) {
this.size = size;
}
public int getSize() {
return size;
}
public static void main(String[] args) {
Boy me = new Boy();
me.setSize(18);
System.out.println(me.getSize()+"cm");//18cm
//这里me作为方法参数时传递的是引用,指向的同一对象。
me.addSize(me);
System.out.println(me.getSize()+"cm");//19cm
}
}