指针!!指针!!第一次在Java中感受到指针!!

第一次在Java中感受到指针
可能很多人认为我大惊小怪,可是确实比较激动。
于是发上来分享。
这是我感受到指针的代码。
  public List search( List<String> organizationIds) throws Exception {
try {
begin();
List<String> orgList = organizationIds;
for (int i = 0; i < organizationIds.size(); i++) {
List<String> list = DAO.get(organizationIds.get(i));
for (String str:list) {
orgList.add(str);
}
}
commit();
return usersDatas;
} catch (Exception e) {
rollback();
log.error(e.getMessage(), e);
throw e;
}
}

我把参数中organizationIds这个list赋值给了orgList
我的原意是想把organizationIds的值给orgList
然后后面用orgList去进行操作。
可是我发现。我这样的做法。导致我的程序变成了死循环。
从逻辑代码没看出有什么问题。
于是使用断点功能去追查。
最后发现。每次当我orgList进行add的时候
organizationIds的值也会一起变化。
这是什么情况?以前没遇到过啊。以为是代码没有编译
于是费了很大的力气进行编译……
编译的结果。还是跟之前一样。代码反复的查验。。无果。。

忽然反映过来。 难道是指针???
我的orgList没有进行一次 new操作。所以没有给他开辟一个内存空间。
当把organizationIds赋值给orgList的时候。
只是把orgList的指针指向了organizationIds的内存地址????
于是把代码改为如下:
  public List search( List<String> organizationIds) throws Exception {
try {
begin();
List<String> orgList = new ArrayList<String>();
for (int i = 0; i < organizationIds.size(); i++) {
orgList.add(organizationIds.get(i));
List<String> list = DAO.get(organizationIds.get(i));
for (String str:list) {
orgList.add(str);
}
}
commit();
return usersDatas;
} catch (Exception e) {
rollback();
log.error(e.getMessage(), e);
throw e;
}
}


果然这一次没有问题了。并且orgLIst的值完全正确……

其实Java也是一样。还是有指针的嘛…………
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值