Java函数形参"传值"和"传引用"的区别
public class TestFun2 {
public static void changeStr(String str){
str="hello"; //形参指向字符串 “hello”
}
public static void main(String[] args) {
String s="1" ;
changeStr(s);
System.out.println("s="+s); //实参s引用没变,值也不变
}
}
Java函数形参”传值”和”传引用”的区别:
(一)基本数据类型:传值,方法不会改变实参的值。
public class TestFun {
public static void changeInt(int i){
i=5;
}
public static void main(String[] args) {
int a=0 ;
changeInt(a);
System.out.println("a="+a);
}
}
程序执行结果:a=0
(二)对象类型参数:传引用,<”方法体内改变形参引用,不会改变实参的引用”>,<”但有可能改变实参对象的属性值”>
(1)方法体内改变形参引用,但不会改变实参引用 ,实参值不变。
程序执行结果:s=1
(2)方法体内,通过引用改变了实际参数对象的内容,注意是“内容”,引用还是不变的。
public class TestFun2 {
public static void changePersonAge(Person person){
person.age += 10; //形参指向Person对象的值改变
}
public static void main(String[] args) {
Person person = new Person(20);
changePersonAge(person);
System.out.println("person.age="+person.age); //实参s引用没变,但引用对象的值改变了
}
}
class Person {
public int age;
public Person(int age) {
this.age = age;
}
}
程序执行结果:person.age=30;
还没有评论,来说两句吧...