Java中常见的函数类型和参数传递
发布时间:2023-07-03 02:21:14
Java中常见的函数类型和参数传递方式有很多种,以下是其中几种常见的方式:
1. 方法参数传递的基本类型:
在Java中,基本类型的参数传递是按值传递的方式,即将实际参数的副本传递给方法,方法内对参数的任何修改不会影响实际参数的值。例如:
public static void changeValue(int x) {
x = 10;
}
public static void main(String[] args) {
int a = 5;
changeValue(a);
System.out.println(a); // 输出5
}
2. 引用类型的参数传递:
对于引用类型的参数传递,实际传递的是引用的副本而不是引用本身。由于传递的是副本,所以在方法内对参数的更改会影响实际参数的值。例如:
public static void changeValue(StringBuilder str) {
str.append("world");
}
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello ");
changeValue(sb);
System.out.println(sb.toString()); // 输出Hello world
}
3. 数组类型的参数传递:
数组类型的参数传递与引用类型类似,传递的是数组的副本。同样,对该副本的任何更改都会影响实际数组的值。例如:
public static void changeArray(int[] arr) {
arr[0] = 10;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3};
changeArray(arr);
System.out.println(Arrays.toString(arr)); // 输出[10, 2, 3]
}
4. 方法参数传递的对象:
Java中的方法参数传递是传值的方式,即无论是基本类型还是引用类型,传递的都是副本。因此,当传递的参数是对象时,对副本的更改不会影响原始对象的值。例如:
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public static void changePerson(Person person) {
person.setName("Alice");
person = new Person("Bob");
}
public static void main(String[] args) {
Person person = new Person("John");
changePerson(person);
System.out.println(person.getName()); // 输出Alice
}
在上面的例子中,虽然在方法changePerson内创建了一个新的Person对象,并将它赋给了参数person,但这个更改不会影响main方法中的person对象的引用。
总结:
在Java中,参数传递分为基本类型和引用类型两种方式。对于基本类型的传递,传递的是值的副本,对副本的任何更改都不会影响原始值。对于引用类型和数组类型的传递,传递的是引用的副本,对副本的任何更改都会影响原始引用或数组的值。对于传递的对象,即使在方法内部重新分配了一个新的对象,也不会影响原始引用所指向的对象。
