1 public class ch01 { 2 String str = "lisi"; 3 public static void change(String str){ 4 System.out.println(str); 5 } 6 7 public static void main(String[] args) { 8 ch01 c = new ch01(); 9 String str01 = "zhangsan"; 10 change(str01); 11 System.out.println(c.str); 12 } 13 }
输出结果为:
zhangsan
lisi
分析:因为String是个特殊的final类,所以每次对String的更改都会重新创建内存地址并存储(也可能是在字符串常量池中创建内存地址并存入对应的字符串内容),但是因为这里String是作为参数传递的,在方法体内会产生新的字符串而不会对方法体外的字符串产生影响。
原文:http://www.cnblogs.com/XuGuobao/p/7203390.html