校园网站建设网站,做网站怎么修改网址,东莞seo网站优化排名,中国铁路建设投资公司网站开始之前#xff0c;我们先来搞懂下面这两个概念#xff1a;
形参实参值传递引用传递
方法的定义可能会用到 参数#xff08;有参的方法#xff09;#xff0c;参数在程序语言中分为#xff1a;
实参#xff08;实际参数#xff0c;Arguments#xff09;…
开始之前我们先来搞懂下面这两个概念
形参实参值传递引用传递
方法的定义可能会用到 参数有参的方法参数在程序语言中分为
实参实际参数Arguments用于传递给函数/方法的参数必须有确定的值。形参形式参数Parameters用于定义函数/方法接收实参不需要有确定的值。
String hello Hello!;
// hello 为实参
sayHello(hello);
// str 为形参
void sayHello(String str) {System.out.println(str);
}值传递、引用传递 程序设计语言将实参传递给方法或函数的方式分为两种
值传递方法接收的是实参值的拷贝会创建副本。引用传递方法接收的直接是实参所引用的对象在堆中的地址不会创建副本对形参的修改将影响到实参。 很多程序设计语言比如 C、 Pascal )提供了两种参数传递的方式不过在 Java 中只有值传递。 在Java中参数传递是通过值传递pass-by-value进行的。这意味着当你将一个变量作为参数传递给一个方法时实际上传递的是该变量的值的副本而不是变量本身。 对于基本数据类型如int、float、boolean等它们被存储在栈内存中当你将一个基本数据类型作为参数传递给一个方法时传递的是该值的副本方法中的修改不会影响原始的变量。
示例
public class Main {public static void main(String[] args) {int x 10;modifyValue(x);System.out.println(x); // 输出: 10}public static void modifyValue(int value) {value 20;}
} 对于引用类型如数组、对象等变量存储的是对象在堆内存中的引用地址。当你将一个引用类型作为参数传递给一个方法时传递的是引用的副本但这两个引用仍指向同一个对象因此方法中的修改会影响到原始的对象。
示例
public class Main {public static void main(String[] args) {int[] arr {1, 2, 3};modifyArray(arr);System.out.println(Arrays.toString(arr)); // 输出: [4, 5, 6]Person person new Person(Alice);modifyPerson(person);System.out.println(person.getName()); // 输出: Bob}public static void modifyArray(int[] array) {array[0] 4;array[1] 5;array[2] 6;}public static void modifyPerson(Person p) {p.setName(Bob);}
}class Person {private String name;public Person(String name) {this.name name;}public String getName() {return name;}public void setName(String name) {this.name name;}
}在上述示例中方法modifyArray和modifyPerson分别修改了传递进来的数组和对象的属性这些修改会反映在原始的变量上。 因此尽管Java中的参数传递是通过值传递进行的但对于引用类型实际上是通过传递引用的副本来操作同一个对象。这常常被称为引用传递但严格来说它仍然是值传递的一种形式。 更多消息资讯请访问昂焱数据。