1、对象是按引用传递的
2、Java 应用程序有且仅有的一种参数传递机制,即按值传递
3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本
2、Java 应用程序有且仅有的一种参数传递机制,即按值传递
3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本
4、按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本
1.对象就是传引用
2.原始类型就是传值
3.String,Integer, Double等immutable类型因为没有提供自身修改的函数,每次操作都是新生成一个对象,所以要特殊对待。可以认为是传值。
Integer 和 String 一样。保存value的类变量是Final属性,无法被修改,只能被重新赋值/生成新的对象。 当Integer 做为方法参数传递进方法内时,对其的赋值都会导致 原Integer 的引用被 指向了方法内的栈地址,失去了对原类变量地址的指向。对赋值后的Integer对象做得任何操作,都不会影响原来对象。
class Num{
int val = 0;
}
public class Test {
public static void main(String[] args) {
Integer aInteger = 6000;
int a = 7;
Num num = new Num();
num.val = 5;
System.out.println(aInteger);
change(aInteger);
change1(a);
// change2(num);
System.out.println(aInteger);
}
private static void change2(Num num) {
// TODO Auto-generated method stub
num.val =100;
}
private static void change1(int a) {
// TODO Auto-generated method stub
a++;
}
private static void change(Integer aInteger) {
// TODO Auto-generated method stub
aInteger++;
}
}