版权声明:欢迎转载,期待指正 https://blog.csdn.net/fighting_sxw/article/details/89785916
public class Test06 {
String str=new String("haha");
char[] ch={'a','b'};
public void change(int x,String str,char ch[]){
x=2;
str.replace("a","e"); //替换后生成的新字符串。 对原来的字符串没有影响
ch[0]='c';
}
public static void main(String[] args) {
int x=1;
Test06 ts=new Test06();
ts.change(x,ts.str,ts.ch);
System.out.println(x+",");
System.out.println(ts.str+",");
System.out.println(ts.ch);
}
}
输出:
1,
haha,
cb
分析:
main方法中,x虽然传递给了change方法,但是对x本身没有影响,因为main中的x和change中的x处在不同的栈帧中,可以理解为处在不同的内存空间
String是引用类型,但是replace方法,替换后生成的新字符串。 对原来的字符串没有影响
所以ts.str 传递给change方法后,ts.str没有改变
数组是引用类型,change方法中对ch[0] 进行了重新赋值,所以ch的值改变了
ps:从大佬的抖音直接搬运过来,抖音号:Todaystart,不妥之处,还望指正!