Java引用传递详解
时间: 2024-04-23 17:18:19 浏览: 37
在Java中,参数传递有两种方式:值传递和引用传递。值传递是指将实际参数的值复制一份给形式参数,而引用传递是指将实际参数的引用(地址)复制一份给形式参数。
Java中的基本数据类型(如int、float等)都是采用值传递的方式进行参数传递。这意味着在方法内部修改形式参数的值不会影响到实际参数的值。
而对于对象类型,Java采用的是引用传递。当将一个对象作为参数传递给方法时,实际上传递的是对象的引用(地址),而不是对象本身。这意味着在方法内部修改对象的属性值会影响到实际对象的属性值。
需要注意的是,虽然对象的引用被传递给了方法,但是如果在方法内部将引用指向了一个新的对象,那么这个改变不会影响到原始对象。
下面是一个示例代码来说明Java中的引用传递:
```java
public class Main {
public static void main(String[] args) {
Person person = new Person("Alice");
System.out.println("Before changeName method: " + person.getName());
changeName(person);
System.out.println("After changeName method: " + person.getName());
}
public static void changeName(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;
}
}
```
输出结果为:
```
Before changeName method: Alice
After changeName method: Bob
```
在上述代码中,通过引用传递将`person`对象传递给`changeName`方法,方法内部修改了对象的属性值,导致在方法外部也能看到修改后的结果。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)