黑马程序员技术交流社区

标题: 求大神支招 [打印本页]

作者: 经济    时间: 2015-6-8 10:54
标题: 求大神支招
package com.dyn.itheima;
import java.util.ArrayList;
public class Test {
public static void main(String args[]) {
  ArrayList<Integer> list = new ArrayList<Integer>();
  list.add(12);
  list.add(44);
  list.add(10);
  
  change(list);
  
  System.out.println(list);
}
private static void change(ArrayList<Integer> list) {
  // TODO Auto-generated method stub
  list = null;
}
}

最终list,为什么不为null,求大神帮助,

作者: qq10763582    时间: 2015-6-8 11:59
java中只有值传递
private static void change(ArrayList<Integer> list) {
  // TODO Auto-generated method stub
  list = null;
}
你这个方法并没有改变list 本身
作者: qq10763582    时间: 2015-6-8 12:01
如果你要非要把list 设置为null 的话 可以这样写
ArrayList<Integer> list = new ArrayList<Integer>();
                  list.add(12);
                  list.add(44);
                  list.add(10);
                  
                  list=null;
                  
                  System.out.println(list);
作者: 经济    时间: 2015-6-8 12:31
qq10763582 发表于 2015-6-8 11:59
java中只有值传递
private static void change(ArrayList list) {
  // TODO Auto-generated method stub

我没听错吧,java中只有值传递?
作者: 经济    时间: 2015-6-8 12:34
qq10763582 发表于 2015-6-8 12:01
如果你要非要把list 设置为null 的话 可以这样写
ArrayList list = new ArrayList();
                  list.add(12);

java中存在引用传递
作者: qq10763582    时间: 2015-6-9 15:47
呵呵,我多说也没有用,你百度一下关于java的一个参数传递的问题!你自己就明白了。如果你真的证明我错了,麻烦给我个回复,我也是是新手,我学习学习
作者: 经济    时间: 2015-6-9 16:00
qq10763582 发表于 2015-6-9 15:47
呵呵,我多说也没有用,你百度一下关于java的一个参数传递的问题!你自己就明白了。如果你真的证明我错了, ...

应该是你记错了,值传递和引用传递的区别,我记得当初老师是当重点讲的,
作者: 半月    时间: 2015-6-9 16:14
是值传递.
只是基本类型传递的是值,对象传递的是他们的地址

change(ArrayList<Integer> list) 这个方法中的list和主函数中的list不是同一个
一个是形参一个是实参
你对list = null 只是把方法中的list为空,但是主函数中的list还是指向这个地址的
作者: 经济    时间: 2015-6-9 16:25
半月 发表于 2015-6-9 16:14
是值传递.
只是基本类型传递的是值,对象传递的是他们的地址

list传递的不是地址吗?
作者: 半月    时间: 2015-6-9 16:33
是啊,对象作为一个参数被传递到方法中时,参数的值就是该对象的引用。

但是方法中的list和main中的list是不一样的
或者你把private static void change(ArrayList<Integer> list) 中的list改成其他名字看起来会直观点
作者: 经济    时间: 2015-6-9 17:10
半月 发表于 2015-6-9 16:33
是啊,对象作为一个参数被传递到方法中时,参数的值就是该对象的引用。

但是方法中的list和main中的list是 ...

晓得了,Thanks,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2