Java 中的参数传递时传值呢? 还是传引用?

Java 中的参数传递时传值呢? 还是传引用?
Java 中的参数传递是按值传递。这意味着当你将一个变量传递给一个方法时,实际上是将该变量的值复制一份传递给了方法,而不是将变量本身传递给方法。
无论是基本数据类型还是对象引用,都是按值传递。下面分别说明基本数据类型和对象引用的情况:
基本数据类型:
对于基本数据类型(如int、float、char等),方法得到的是该变量的一份拷贝,对该拷贝的修改不会影响原始变量的值。
void modifyValue(int x) { x = 10; } public static void main(String[] args) { int number = 5; modifyValue(number); System.out.println(number); // 输出:5,原始变量未被修改 }
对象引用:
对于对象引用,实际上是将引用的值(即对象的地址)传递给了方法,但方法内对引用的修改不会影响原始引用指向的对象。
class MyClass { int value; } void modifyObjectReference(MyClass obj) { obj = new MyClass(); obj.value = 10; } void modifyObjectValue(MyClass obj) { obj.value = 10; } public static void main(String[] args) { MyClass myObj = new MyClass(); myObj.value = 5; modifyObjectReference(myObj); System.out.println(myObj.value); // 输出:5,原始引用未被修改 modifyObjectValue(myObj); System.out.println(myObj.value); // 输出:10,原始引用指向的对象被修改 }
总体来说,无论是基本数据类型还是对象引用,Java 中的参数传递都是按值传递。在传递对象引用时,传递的是引用的副本,但对引用的修改不会影响原始引用。然而,通过引用可以修改对象的内部状态。