不同于C++/C ,Java里的为传值与传引用 基本类型如int ,double等,都是传值的, 而对象类型的则是传引用的。 当函数的参数为基本类型时,在内部对这个参数的改变不会影响到外部的实参 当函数的参数为对象类型时,在内部对这个参数进行值的改变时,也不会影响到外部的对象实参。“但是有可能会改变对象的属性“。 //改变对象的属性这点我还不清楚,看网上的一些资料是这样说的。哪天遇到了,再来这里更改,总之值是不会改变的。 //如: //传递的是对象,但是却在内部对他进行了值的改变,依据上面所说的,对外部是没影响的,上机测试也如此。 public static void main(String[] args){ String s="1" ; sad.testStr(s); System.out.println("s="+s); //实参s引用没变,值也不变 } public static void testStr(String str){ str+="hello";//型参指向字符串 “hello” } //输出;s=1; //对StringBuffer举例,改变了他的内容 public static void testStringBuffer(StringBuffer sb){ sb.append("java");//改变了实参的内容 } public static void main(String[] args) { StringBuffer sb= new StringBuffer("my "); new TestFun4().testStringBuffer(sb); System.out.println("sb="+sb.toString());//内容变化了 } //输出:sb=my java