java中参数传递只有值传递,而且都是复制副本传递
但分为两种情况,
一种为原始类型参数(如基本数据类型和字符串等),java运行机制会直接复制该参数值然后再在方法中使用,所以不会影响原来方法中参数的值。
第二种是引用类型参数,此时复制的是参数对象的内存地址,所以如果对该对象进行change,是会影响到原来对象的数值的,但如果直接让该引用指向另一个对象,则不会影响到原来方法中参数的属性。
测试代码如下:
@Test
public void testFour(){
String str = "123";
TestStudent ts = new TestStudent(6,"往下");
changeValue(str, ts);
System.out.println(str+"=========="+ts.getName());
}
public void changeValue(String str, TestStudent ts){
str = "ABC567";
ts.setAge(3);
ts.setName("往上");
}
测试结果为 123==========往上。