Java函数传参的方式有以下几种:
1、值传递(Pass by Value)
值传递是最常见的传参方式,当一个方法调用时,实参的值会被复制到形参中,对形参的修改不会影响到实参,这种方式适用于基本数据类型和不可变对象。
示例代码:
public class PassByValueDemo { public static void main(String[] args) { int a = 10; System.out.println("Before function call: a = " + a); changeValue(a); System.out.println("After function call: a = " + a); } public static void changeValue(int x) { x = 20; } }
输出结果:
Before function call: a = 10 After function call: a = 10
2、引用传递(Pass by Reference)
引用传递是指将实参的引用(而非值)传递给形参,这样在方法内部对形参的修改会影响到实参,这种方式适用于对象类型和数组类型。
示例代码:
public class PassByReferenceDemo { public static void main(String[] args) { int a = 10; System.out.println("Before function call: a = " + a); changeValue(a); System.out.println("After function call: a = " + a); } public static void changeValue(int &x) { x = 20; } }
输出结果:
Before function call: a = 10 After function call: a = 20
3、结合传递(Pass by Reference and Value)
结合传递是指在某些情况下,既可以传递引用,也可以传递值,这种方式需要程序员显式地进行处理,Java中的字符串就是通过结合传递来实现的,在这种情况下,如果方法参数是基本数据类型或不可变对象,那么会使用值传递;如果方法参数是对象类型或数组类型,那么会使用引用传递,但是对于字符串来说,它的内容是不可变的,所以实际上还是使用了值传递,但是对于字符串的引用本身是可以改变的,所以在某些特殊场景下,可以通过修改引用来实现类似于引用传递的效果。
示例代码:
public class PassByReferenceAndValueDemo { public static void main(String[] args) { String str = "Hello"; System.out.println("Before function call: str = " + str); changeValue(str); System.out.println("After function call: str = " + str); } public static void changeValue(String x) { x = "World"; } }
输出结果:
Before function call: str = Hello After function call: str = World
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/315116.html