关于数组循环赋值后值被覆盖的问题

Unlikeha 2018-07-08 01:47:52
求助各位大神,最近遇到了一个问题,数组(储存的是对象实例)在循环赋值后值全部都变成了最后一个储存的值,在网上查阅后发现问题大概是储存的其实是对象的引用,所以最后全都指向了同一个数值,但实在苦于愚钝,没有想到解决办法,只好来求助于各位。因为是新注册,所以没有c币可以用来赠予,实在抱歉。代码如下:
/*Edge[] edges{
Vertexs[2]
data
}*/

while((str1=br1.readLine()) != null){
String temp[]=str1.split("——");
for(int k=0;k<nodes.length;k++){
//在node[]里遍历,包含temp[0]字符的赋值给Vertexs[0]
if(new String(nodes[k].getData().getBytes(),"utf-8").indexOf(new String(temp[0].getBytes(),"utf-8"))!=-1){
vertexs[0]=nodes[k];
break;
}
}
for(int k=0;k<nodes.length;k++){
//在node[]里遍历,包含temp[1]字符的赋值给Vertexs[1]
if(new String(nodes[k].getData().getBytes(),"utf-8").indexOf(new String(temp[1].getBytes(),"utf-8"))!=-1){
vertexs[1]=nodes[k];
break;
}
}
//创建过渡对象edge,赋值完后将edge赋值给edges[j]
Edge edge=graph.new Edge();
edge.setVertex(vertexs);
edge.setData(Integer.parseInt(temp[2]));
edges[j]=edge;
j++;
}
感谢各位!
...全文
2023 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44881178 2019-07-02
  • 打赏
  • 举报
回复
String str = new String("abc");这个你应该知道吧?还可以写成String str = "abc"; 然后你把把str这个对象加入到数组中加多少次无所谓,你看看==是否是true。一个类的对象你加入数组如果你要加入多个对象你加入的时候可以这样String str = {new String("abc"),new String("abc"),new String("abc")};然后你遍历看看是否地址是一样的。 jvm把你new出来的一个会用运行内存存起来,new一次会存一次,前面str只是一个代号,用来代表new String()这个对象代号是str。 说起值的话要说起object中的toString()方法了你可以去看看源码,return 包名+类名+Integer.什么的(hashCode());总的来说一个对象是否是同一个对象就看他new了几次,而不是看对象名
AhKeiya 2018-11-20
  • 打赏
  • 举报
回复
你要给条件判断然后再赋值, 例如你循环一个数组 (1.2.3.4.5.6.7.8.9) 赋给 一个变量 a 如果不判断的话 a第一次会等于1 然后等于2 直到等于9 同理赋值给一个数组也是这样, 关键是你要找出一个共同点来判断什么时候该赋值 什么时候不赋值

50,344

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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