经典指数          
原因
1964
浏览数
0
收藏数
 

以下代码输出的是:
public class SendValue{
	public String str="6";
	public static void main(String[] args) {
		SendValue sv=new SendValue();
		sv.change(sv.str);
		System.out.println(sv.str);
	}
	public void change(String str) {
		str="10";
	}
}

  • 6
  • 10
  • 都不对
  • 16

     举报   纠错  
 
切换
1 个答案
Java中String类型变量是immutable(不可变的)。 尽管 change()方法中的str与sv.str都是新的对象实例成员变量值"6"的引用, 由于String类型的 不可变 性,change()方法中的str="10"语句实际上是将传入的str副本引用指向了一个值为“10”的新的内存地址,但 原数据引用 sv.str的引用值(也就是“6”的内存地址) 并没有发生改变,因此sv.str指向的值仍旧为6. 参考博客:http://www.cnblogs.com/alexlo/p/3493755.html
 
切换
撰写答案
扫描后移动端查看本题