JAVA参数传递方式与参数数据类型有关
先清楚JAVA的数据类型:
- 基本数据类型:
byte、short、int、long、boolean、float、double、char - 引用类型:
类(class)(数组也是类的对象)、抽象类(abstract class)、接口(interface)
对基本数据类型和String类对象进行的是值传递:
分析示例代码
public static void main(String[] args) {
int a = 6;
String b = "原始";
change(a,b);
System.out.print(a+" ");
System.out.println(b);
}
public static void change(int n,String str){
n++;
str = "改变";
}
这里将a和b传入change方法时,以值传递方式传递
从图中可以看出change中的n只是a的“克隆”,在内存中二者储存在不同位置,对n的操作不再影响到a;b与str的关系和n、a的关系类似;所以最终打印的结果是 6 原始
对引用类型进行的是引用传递:
分析示例代码
public class Num {
public int a = 6;
}
public static void main(String[] args) {
Num num1 = new Num();
change(num1);
System.out.println(num1.a);
}
public static void change(Num num){
num.a++;
}
该次的传参过程是将num1中存的对象首地址值@111赋给num,change方法循@111找到对象,对对象中的a进行操作。num1与num存的值相同,指向同一对象,所以循num1找到对象输出a值时,结果为 a被修改后的值 7