在Java中,字符串作为参数传递,是传递值还是引用?形参改变会不会影响实参?
时间: 2024-05-16 12:14:24 浏览: 170
在Java中,字符串作为参数传递是传递引用。也就是说,当你把一个字符串作为参数传递给一个方法时,实际上传递的是该字符串对象的引用,而不是该字符串对象的副本。因此,如果你在方法中修改了该字符串对象,那么这个修改会影响到该对象的所有引用,包括传递给该方法的引用。但是,如果你在方法中重新分配了该字符串对象的引用,那么这个操作不会影响到该对象的所有引用。
举个例子,假设有以下代码:
```java
public static void main(String[] args) {
String str1 = "Hello";
System.out.println(str1); // 输出 Hello
changeString(str1);
System.out.println(str1); // 输出 World
}
public static void changeString(String str2) {
str2 = "World";
}
```
在这个例子中,我们首先定义了一个字符串对象 `str1`,并将其初始化为 `"Hello"`。然后我们调用 `changeString` 方法,并将 `str1` 作为参数传递给该方法。在 `changeString` 方法内部,我们重新分配了 `str2` 的值,将其指向了一个新的字符串对象 `"World"`。因此,当 `changeString` 方法返回时,`str2` 的作用域就结束了,它所指向的字符串对象也就被销毁了。但是,这个操作并不会影响到 `str1` 所指向的字符串对象,因此在 `main` 方法中输出 `str1` 的值时,它仍然是 `"Hello"`。
阅读全文