public class test {
public static void main(String[] args) {
String str = "hello"; // 1
changeStr(str); // 2
System.out.println(str); //4
}
public static void changeStr(String temp) {
temp = "java"; // 3
}
}
1处执行后在堆内存中开辟一个空间存放hello;同时占内存存放str;
2处执行函数;
3处是参数传递的关键所在,当执行3时,因为string是不可变对象,所以堆内存中重新开辟一个空间存放Java,并且temp指向该值(执行到这里时,原来的str引用hello依然不变)
代码执行到4处 temp已然销毁,而Java也失去了引用 等待JVM的清理,所以最终str的值依然指向hello
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。