public class Example{
      String str=new String("good");
      char[] ch={'a','b','c'};
      public static void main(String args[]){
             Example ex=new Example();
             ex.change(ex.str,ex.ch);
             System.out.print(ex.str+"and");
             System.out.print(ex.ch);
      }
      public void change(String str,char ch[]){
             str="test ok";
             ch[0]='g';
      }
}
运行结果  为什么是: good and gbc

解决方案 »

  1.   

    java是值传递
    http://blog.csdn.net/faintbear/archive/2004/11/29/198021.aspx
      

  2.   

    引用类型在参数中传递的是一个拷贝,指向与原变量相同的空间,public void change(String str,char ch[]){ 
                str="test ok"; 给String变量赋值相当于重新创建了一个String对象,与传入进来的对象没关系了。不会改变原变量的值。
                ch[0]='g'; char[]数组也是引用类型,指向与传入进来的ch相同的空间,ch[0]是基本数据类型,是值传递。
    }
      

  3.   

    8种基本类型(byte,short,Int ,long,char,float,double或Boolean)和String类型:形式参数被初始化成实际参数的值,后续对形式参数的修改不会影响到实际参数。而除了那些类型外的参数,就属于引用变量,对形式参数的修改会影响到原来的实际参数.例如数组类型;接分了^_^