
关于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);
} 展开
{
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);
} 展开
3个回答
展开全部
* Java 编程语言只有值传递参数。
* 当一个对象实例作为一个参数被传递到方法中时,
* 参数的值就是该对象的引用一个副本。
* 指向同一个对象,对象的内容可以在被调用的方法中改变,
* 但对象的引用(不是引用的副本)是永远不会改变的.
* Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。
list = new ArrayList<Integer>();只是改变了副本的地址。
如果注释掉list = new ArrayList<Integer>();下面改变了原地址中的值
list.add(1);
list.add(2);
* 当一个对象实例作为一个参数被传递到方法中时,
* 参数的值就是该对象的引用一个副本。
* 指向同一个对象,对象的内容可以在被调用的方法中改变,
* 但对象的引用(不是引用的副本)是永远不会改变的.
* Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。
list = new ArrayList<Integer>();只是改变了副本的地址。
如果注释掉list = new ArrayList<Integer>();下面改变了原地址中的值
list.add(1);
list.add(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了。
这么简单的问题都没人回答了,汗!
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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询