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

yj327243832a 2015-04-28 09:24:32
 */
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

...全文
169 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan19931103 2015-04-29
  • 打赏
  • 举报
回复
引用 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的值又能改变 [/quote] 你调用改变的还是引用而已啊
yj327243832a 2015-04-29
  • 打赏
  • 举报
回复
http://hxraid.iteye.com/blog/428856
zzlovelyboy 2015-04-29
  • 打赏
  • 举报
回复
最后都是lista和listb都指向lista的用
util_00000 2015-04-28
  • 打赏
  • 举报
回复
Java 中 是没有指针的,引用是不改变lista的,
非洲_bear 2015-04-28
  • 打赏
  • 举报
回复
你要清楚你有四个引用,两个对象,lista引用没有发身改变,所以是0
疯狂熊猫人 2015-04-28
  • 打赏
  • 举报
回复
给你打个比方:一把钥匙A能开一道门,用A复制一把B,B同样能开这道门。那么,你把钥匙B修改了,你说钥匙A会变吗?
yj327243832a 2015-04-28
  • 打赏
  • 举报
回复
引用 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的值又能改变
alan19931103 2015-04-28
  • 打赏
  • 举报
回复
你并没有改变lista这个引用啊,你改变的引用是a、b而已

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧