Java中集合list的add方法添加的不是值COPY而是地址
博客专区 > osDaniel 的博客 > 博客详情
Java中集合list的add方法添加的不是值COPY而是地址
osDaniel 发表于4年前
Java中集合list的add方法添加的不是值COPY而是地址
  • 发表于 4年前
  • 阅读 269
  • 收藏 0
  • 点赞 0
  • 评论 2

腾讯云 技术升级10大核心产品年终让利>>>   

测试代码如下:

package test;


import java.util.ArrayList;
import java.util.List;




class Point {
int x;
int y;

public Point(int x,int y)
{
this.x = x;
this.y = y;
}


public int getX() {
return x;
}


public void setX(int x) {
this.x = x;
}


public int getY() {
return y;
}


public void setY(int y) {
this.y = y;
}

}


public class TestListAdd {
public static void main(String[] args)
{
List<Point> storePointList = new ArrayList<Point>();
Point testPoint = new Point(3,4);
storePointList.add(testPoint);
System.out.println("x = " + storePointList.get(0).getX() + ", y = " + storePointList.get(0).getY());
testPoint.setX(8);
System.out.println("x = " + storePointList.get(0).getX() + ", y = " + storePointList.get(0).getY());
}
}


结果为:

x = 3, y = 4
x = 8, y = 4


也即:

在add进storePointList之后,修改原来的testPoint 中的值,仍将改变storePointList中对应元素的值,可以看出add中()的只是传地址。

在这一点上和一般的java方法传参是一致的。一般java传参传的同样是地址。

可以总结出一个规律:在java中凡是对对象(或者说对象名)进行的传参传的都是地址。这是在方法体内部通过传进来的参数更改其下的属性可行的。

共有 人打赏支持
粉丝 7
博文 37
码字总数 17120
评论 (2)
纳兰清风
内置简单类型按值传递,string和其他认为定义类型按引用传递
osDaniel

引用来自“纳兰清风”的评论

内置简单类型按值传递,string和其他认为定义类型按引用传递

79
×
osDaniel
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: