1:按值传递是什么(例:基本数据类型:字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float)
指的是在方法调用时,传递的参数是按值的拷贝传递。
按值传递重要特点:传递的是值的拷贝,也就是说传递后就互不相关了,也就是不会改变原来自身的值
例如:
public class Test {
public static void change(int i, int j) {
int temp = i;
i = j;
j = temp;
}
public static void main(String[] args) {
int a = 3;
int b = 4;
change(a, b);
System.out.println("a=" + a);
System.out.println("b=" + b);
}
结果:a=3,b=4
此时a,b的值并未发生改变
2:按引用传递是什么(例: 对象和数组,指针)
指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。
传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。也就是会改变自身原来的值
例:
public class Test {
public static void change(int[] arr2) {
arr2[0] = 6;
}
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
change(arr);
System.out.println(arr[0]);
}
此时结果为:6
数组此时传递的值为地址值。所以自身的值发生改变