论述题 2.  下面程序是否存在问题?如果存在,请指出问题所在,如果不存在,说明输出结果。
    public class Test
    {
    public static void main(String[]args)
    {
    String str=new String("good");
    char[]ch={'a', 'b', 'c'};
    Test ex=new Test();
    ex. change(str,ch);
    System.out.print(str+"and");
    System.out.print(ch);
    }
    public void change(String str,char ch[])
    {
    str="testok";
    ch[0]='g';
    }
    }
【正确答案】不存在问题,输出结果为goodandgbc。
【答案解析】 在调用change方法时,str和cb传递的都是引用,在方法中修改了ch指向对象的内容,由于形参与实参指向相同的对象,因此,通过形参对对象内容的修改对实参是可见的。对于str来说,修改的是引用本身,也就是说,修改的是引用的值,而不是修改了引用指向的内容。形参引用的值是实参引用值的一个拷贝;从这个角度来讲,引用传递是通过传递引用的值来实现的,可以理解为值传递,对引用本身的修改对实参是不可见的。