Java如何值
Java如何传递值
Java中的值传递是通过将变量的值复制给方法参数来实现的。基本数据类型(如int、double等)和对象引用在方法调用时都是按值传递的。
基本数据类型的值传递
基本数据类型在方法调用时,传递的是值的副本。方法内部对参数的修改不会影响原始变量。
public class Main {
public static void modifyValue(int value) {
value = 100;
}
public static void main(String[] args) {
int num = 50;
modifyValue(num);
System.out.println(num); // 输出50
}
}
对象引用的值传递
对象引用在方法调用时,传递的是引用的副本。方法内部对对象属性的修改会影响原始对象,但重新赋值引用不会影响原始引用。
class Person {
String name;
Person(String name) {
this.name = name;
}
}
public class Main {
public static void modifyPerson(Person p) {
p.name = "Alice";
}
public static void changeReference(Person p) {
p = new Person("Bob");
}
public static void main(String[] args) {
Person person = new Person("John");
modifyPerson(person);
System.out.println(person.name); // 输出Alice
changeReference(person);
System.out.println(person.name); // 输出Alice
}
}
数组的值传递
数组作为对象,其引用在方法调用时也是按值传递。方法内部对数组元素的修改会影响原始数组。
public class Main {
public static void modifyArray(int[] arr) {
arr[0] = 100;
}
public static void main(String[] args) {
int[] array = {1, 2, 3};
modifyArray(array);
System.out.println(array[0]); // 输出100
}
}
不可变对象的值传递
不可变对象(如String)在方法调用时,传递的是引用的副本。方法内部对引用的重新赋值不会影响原始引用。

public class Main {
public static void modifyString(String str) {
str = "World";
}
public static void main(String[] args) {
String s = "Hello";
modifyString(s);
System.out.println(s); // 输出Hello
}
}





