以前看过一篇关于JAVA方法是传值还是传引用的博客(暂时还没找到),验证了JAVA方法是传值操作的。那篇文章的核心思想就是,对于基本类型的数据,传的是值得拷贝。对于引用类型,穿的是引用得地址。下面我只是简单验证一下结论,后期完善。
package BasicKnowlege;
import java.nio.Buffer;
public class MethodTest {
public static void main(String[] args){
//第一组数据
String a = "taobao";
String a1 = new String("taobao");
//第二组数据
int m = 1;
Integer m1 = 1;
Integer m2 = new Integer(1);
//第三组数据(特殊组)
String t = "tebie";
StringBuffer buffer = new StringBuffer(t);
methodTest2(buffer);
System.out.println("特殊组 buffer="+buffer);
// 特殊组 buffer=tebiealibaba
//试验
methodTest(a,m);
methodTest(a1,m1);
methodTest(a1,m2);
System.out.println("a="+a+" a1="+a1+" m="+m+" m1="+m1+" m2="+m2);
//输出 a=taobao a1=taobao m=1 m1=1 m2=1 都没改变
}
//测试组
public static void methodTest(String str,int m){
str = str + "alibaba";
m = m + 1;
}
//对照组测试
public static void methodTest2(StringBuffer buffer){
buffer.append("alibaba");
}
}
上面的例子,测试组,无论传的是基础类型还是引用类型,都无法改变实参的值。对照组,传入引用,实际传入引用的地址,然后在该地址上append字符串,输出生效。其实还是没有改变实参的值(引用的地址),但是直接操作了指向地址的值。