写了下面2个方法:
方法1:
public void SwapString1(StringBuffer str1,StringBuffer str2){
StringBuffer str3=new StringBuffer();
str3=str1;
str1=str2;
str2=str3;
}
方法2:
void PrintScoreByYuwen(Studentclass[] s){
for(int i=0;i<s.length;i++){
for(int j=i+1;j<s.length;j++){
if(s[i].yuwen >s[j].yuwen){
Studentclass tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
}
}
都是引用传递,为何在main方法调用时,方法1不会改变实参
方法2会改变实参(对象数组)内的排列顺序
这2个有什么区别吗
方法1我知道是改变形参的值,没有改变实参的值
我的问题是,方法2为何改变了实参的值呢?方法2难道不是应该仅仅改变实参的值吗
注意一下方法2, 你传递进去的实参是s数组,这样在方法内部是对s这个数组引用进行操作,当然s[i]这种修改的就是对象的值了,因为这个是你s数组引用对应到的对象。
建议你对“对象” 和“对象引用”好好思考一下。