关于java引用传递问题,谁能给一个详细的解释,谢谢了???

publicstaticvoidmain(String[]args){List<Integer>list=newArrayList<Integer>();getList(... public static void main(String[] args)
{
List<Integer> list = new ArrayList<Integer>();
getList(list);
System.out.println("size:" + list.size());
}

static void getList(List<Integer> list){
list = new ArrayList<Integer>();
list.add(1);
list.add(2);
}
展开
 我来答
悲剧的星星
2012-11-09 · 超过21用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:32.9万
展开全部
* Java 编程语言只有值传递参数。
* 当一个对象实例作为一个参数被传递到方法中时,
* 参数的值就是该对象的引用一个副本。
* 指向同一个对象,对象的内容可以在被调用的方法中改变,
* 但对象的引用(不是引用的副本)是永远不会改变的.
* Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。
list = new ArrayList<Integer>();只是改变了副本的地址。
如果注释掉list = new ArrayList<Integer>();下面改变了原地址中的值
list.add(1);
list.add(2);
无梦忧忧
2012-11-09
知道答主
回答量:19
采纳率:0%
帮助的人:30.2万
展开全部
getList方法中
list = new ArrayList<Integer>();使变量list指向了新的地址
list.add(1);
list.add(2);
修改的是新地址的内容,
main方法
System.out.println("size:" + list.size());
打印的还是旧地址的值所以是0
getList方法中去掉list = new ArrayList<Integer>();这个初始化的
打印的就是2了。
这么简单的问题都没人回答了,汗!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-09
展开全部
package com.list;
import java.util.ArrayList;import java.util.List;
public class list {
public static void main(String[] args)
{
List<Integer> list = new ArrayList<Integer>();
getList(list);//调用下面的getList方法获得list的容量
System.out.println("size:" + list.size());
}

static void getList(List<Integer> list){
// list = new ArrayList<Integer>();
/* 必须将这一句去掉,不然会重新初始化list,
使得传将来的list和方法中的list指向不同的内存地址,
输出的结果也会一直是0 */
list.add(1);
list.add(2);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式