String 与 char[] 的问题

面试的时候遇到这样一个问题
package  com.fisher.string;

public   class  TestStringChange {

    
public   void  change(String a,  char [] b) {
        a 
=   " Jennfier " ;
        b[
0 =   ' F ' ;
    }

    
public   static   void  main(String[] args) {
        TestStringChange test 
=   new  TestStringChange();

        String a 
=   " Fisher " ;
        
char [] b  =  {  ' f ' ' i ' ' s ' ' h '  };

        test.change(a, b);
        System.out.println(a);
        System.out.println(b);
    }
}

这个是比较容易迷惑的问题。

String 是对象,传引用调用后,穿过方法 change 里去的a 是一份指向"Fisher"对象的指针,当  在change里面改变后,指向别的对象“Jennfier"后,在原来的main 方法里不受影响,改变的不是"Fisher"对象,而是改变该方法的指针a 的指向

但是char[] 数组就会改变了,因为在change  方法里改变的是char[] 数组的内容

答案是

Fisher
Fish

你可能感兴趣的:(String 与 char[] 的问题)