Java笔试题学习之06

版权声明:欢迎转载,期待指正 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,不妥之处,还望指正!

猜你喜欢

转载自blog.csdn.net/fighting_sxw/article/details/89785916