您的位置:首页 > 编程语言 > Java开发

Java中集合list的add方法添加的不是值COPY而是地址

2016-07-30 22:26 549 查看
测试代码如下:

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中凡是对对象(或者说对象名)进行的传参传的都是地址。这是在方法体内部通过传进来的参数更改其下的属性可行的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐