public class Hello4 {
static Integer i;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
i = new Integer(2);
f1(i);
System.out.println(i);
}
public static void f1(Integer i) {
System.out.println("before-"+i);
i = new Integer(1);
System.out.println("after-"+i);
}
}
output:
before-2
after-1
2
java中传递给函数的是引用,引用相当于c语言中的指针,那为什么函数对引用i修改后,在main函数中却没有发生变化呢?
原因:对象类型参数:传引用,方法体内改变形参引用,不会改变实参的引用,但有可能改变实参对象的属性值。
但是根本原因是什么,还不太清楚。
我猜是不是因为c语言中指针本身也是一个数据类型(整型),而java中的引用没有具体的数据类型的原因?
static Integer i;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
i = new Integer(2);
f1(i);
System.out.println(i);
}
public static void f1(Integer i) {
System.out.println("before-"+i);
i = new Integer(1);
System.out.println("after-"+i);
}
}
output:
before-2
after-1
2
java中传递给函数的是引用,引用相当于c语言中的指针,那为什么函数对引用i修改后,在main函数中却没有发生变化呢?
原因:对象类型参数:传引用,方法体内改变形参引用,不会改变实参的引用,但有可能改变实参对象的属性值。
但是根本原因是什么,还不太清楚。
我猜是不是因为c语言中指针本身也是一个数据类型(整型),而java中的引用没有具体的数据类型的原因?