Java的参数传递——形参和实参
问题起源
在写力扣的算法题https://leetcode.cn/problems/merge-sorted-array/时,需要传入一个int类型的数组为形参。在调用时,发现实参没有改变。故写下此博客。
理论知识
在Java中形参与实参对应两种类型:值类型与引用类型
- 值类型:包括8种基本类型(byte、short、int、long、double、float、char、boolean)。为值类型时,形参方法内的参数值改变,不会影响到实参的值
这里要特殊考虑String,以及Integer、Double等几个基本类型包装类,它们都是immutable类型,因为没有提供自身修改的函数,每次操作都是新生成一个对象,所以要特殊对待,可以认为是和基本数据类型相似,传值操作
- 引用类型:数组、类、接口等类型。为引用类型时,形参方法内的参数值改变,会影响到实参的值
代码实践
传值调用
public class tetstest {
public static void main(String[] args) {
int[] a={1,2,5,8,10};
tetstest c=new tetstest();
c.setarray(a);
for(int i:a){
System.out.print(i);
}
System.out.println();
int x=5;
c.set(x);
System.out.println(x);
}
public void setarray(int[] nums){
int[] b={2,2,2,2,2};
nums=b;
}
public void set(int a){
int b=3;
a=b;
}
}
传引用调用
import java.util.Date;
public class tetstest {
public static void main(String[] args) {
Date data=new Date();
tetstest c=new tetstest();
System.out.println(data);
c.set(data);
System.out.println(data);
}
public void set(Date date){
date.setMonth(4);
}
}
参考博客
https://blog.csdn.net/MCJPAO/article/details/104072989
如有错误,欢迎指正