Java 方法调用时,关于引用的问题

J2EE 码拜 9年前 (2015-05-10) 818次浏览 0个评论
 */
	public static void main(String[] args) {
		List<String> lista = new ArrayList<String>();
		List<String> listb = new ArrayList<String>();
		Test tt = new Test();
		listb.add("123456");
		tt.tl(lista, listb);
		System.out.println(lista.size());
		System.out.println(listb.size());
	}

	public void tl(List<String> a,List<String> b){
		a = b;
		System.out.println(a == b);
	}

打印结果是
true
0
1

这个很奇怪,不是应该打印
true
1
1

10分
你并没有改变lista这个引用啊,你改变的引用是a、b而已
引用 1 楼 alan19931103 的回复:

你并没有改变lista这个引用啊,你改变的引用是a、b而已

tt.tl(lista, listb);我这里调用了啊
方法里面的a引用不是lista引用么,如果我
 public void tl(List<String> a,List<String> b){
        a.add(“852”);
        System.out.println(a == b);
    }
lista的值又能改变

10分
给你打个比方:一把钥匙A能开一道门,用A复制一把B,B同样能开这道门。那么,你把钥匙B修改了,你说钥匙A会变吗?
10分
你要清楚你有四个引用,两个对象,lista引用没有发身改变,所以是0
10分
Java 中 是没有指针的,引用是不改变lista的,
最后都是lista和listb都指向lista的用
http://hxraid.iteye.com/blog/428856
引用 2 楼 yj327243832a 的回复:
Quote: 引用 1 楼 alan19931103 的回复:

你并没有改变lista这个引用啊,你改变的引用是a、b而已

tt.tl(lista, listb);我这里调用了啊
方法里面的a引用不是lista引用么,如果我
 public void tl(List<String> a,List<String> b){
        a.add(“852”);
        System.out.println(a == b);
    }
lista的值又能改变

你调用改变的还是引用而已啊


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Java 方法调用时,关于引用的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!