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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值