class Test1{
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
append(list);
System.out.println(list.get(0));
}
public static void append(List list ){
list.add("0042");
}
}
如题;
为何list传入方法append而本身也会改变?不是这是方法中的list会改变而已吗?
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
append(list);
System.out.println(list.get(0));
}
public static void append(List list ){
list.add("0042");
}
}
如题;
为何list传入方法append而本身也会改变?不是这是方法中的list会改变而已吗?
解决方案 »
- java高手来帮帮我
- 小问题,java中自带的包在安装文件中对应于哪些部分?
- 构造函数 前 的protected 有什么用?
- javac 不是内部命令或外部命令,也不是课运行的程序?请帮忙解决一下,在线!
- 有一个问题,棘手的,也很急
- 一个纳闷的JTextArea 问题(再线等待)
- 求教写一个通用的数据报表输出程序(用JAVA实现)给个实现方法,谢谢
- 说出大家所在公司的管理制度以及项目管理、工资等制度,看看每个公司都有什么不同?可以让所有人都了解了解行情啊。
- 帮我查一下问题出在哪里,高分重谢!!
- 哪里有JAVA2的类库手册?(有中文的么?—
- 缺少JOptionPane.showMessageDialog主线程退出问题
- foreach
list.add("0042");往集合对象添加元素,显然是改变了对象内容,当然对象也就改变了http://blog.csdn.net/niuniu20008/article/details/2953785
要实现“值传递”,可以把append这个函数写成返回list类型的函数,然后它里边定义一个list对象的实例,把接受到的list实例赋值给函数里的list实例,然后修改函数里的list实例,之后,返回函数里的list实例,供需要的语句使用。
List list=new ArrayList();
public void show(list){
list.add("dfdsaf");//在这里传入一个对象的引用,我们拿到的仅仅是这个集合的地址
当我们对集合进行添加的时候,其实已经通过该地址在堆中对该集合的内容进行了修改
}
show(list.get(0));
public void show(String a){
//我们在这里对a进行修改操作是不会改变list中list.get(0)值的
因为在这里的a和list.get(0)虽说值相同,但是它们的地址不同,所以不影响 }