java值传递还是引用传递
一般可以这样认为基础类型是值传递,而对象封装是引用传递
public static void main(String[] args) {
ArrayList list =new ArrayList();
list.add("1");
test(list);
System.out.println(list.size());
}
static void test(ArrayList list){
list.clear();
}
对于test。传入对象,以后都会操作这个对象,
可以认为修改后对象本身属性也会变化,所以这里面结果数组会清空,打印0
public static void main(String[] args) {
int a=100;
test(a);
System.out.println(a);
}
static void test(int size){
size=0;
}
分析这里,值传递,本身存在不会影响参数,所以即使设置size=0,实际上是一份拷贝或者影子,所以这里打印结果仍然是100
public static void main(String[] args) {
String str="777";
test(str);
System.out.println(str);
}
static void test(String str){
str="666";
}
这个例子比较奇怪,它按照这里解释应该是打印666的
实际上可以发现这是错误的。
网友评论