在Java语言中,参数传递时,一般存在两种参数传递的规则
1.按值传递
使用该方式传递的参数,参数原始的值不发生变化
适用范围:八种基本数据类型和String
String也是传递的地址,但是String对象一旦被改变,就是生成新的对象
2.按地址值传递
使用该方式传递的参数,在方法内部修改参数的值时,参数原始的值发生改变
适用范围:除String以外的所有复合数据类型,包括数组.类和接口
测试:
public static void main(String[] args) {
int a = 0;
int b [] = {1,2,3};
String c = "str";
System.out.println("=====参数传递前====");
System.out.println("int a = " + a);
System.out.println("int b[] = " + b[0]);
System.out.println("String c = " + c);
//方法调用,参数传递
change(a, b, c);
System.out.println("=====参数传递后====");
System.out.println("int a = " + a);
System.out.println("int b[] = " + b[0]);
System.out.println("String c = " + c);
}
public static void change(int i, int [] j, String k){
i = i + 9;
j[0] = j[0] + 9;
k = "String";
}
结果:
=====参数传递前====
int a = 0
int b[] = 1
String c = str
=====参数传递后====
int a = 0
int b[] = 10
String c = str