传送机制均为值传递
所谓值传递即为:传递实参给方法的形参的时候,传输的是实参变量中储存的值的副本(相当于拷贝)
但有区别:基本数据类型传递的值为数值
引用数据类型传递的是对应序号的储存地址
1.基本数据类型的传递
传送机制均为值传递
所谓值传递即为:传递实参给方法的形参的时候,传输的是实参变量中储存的值的副本(相当于拷贝)
实参:在方法内部定义的变量
形参:定义方法时''(...)''中所声明的参数
public class methoddemo4 {
public static void main(String[] args) {
//理解参数的传递
int a = 10;
change(a);
System.out.println(a);
}
public static void change(int a) {
System.out.println(a);
a = 20;
System.out.println(a);
}
}
例子中
首先进行方法
将main中调用方法的赋值int a=10赋值给方法
调用后将a=10赋值给方法此时打印出的第一个a=10
后就近处理a=20
后在此打印出a=20
由于没有进行数据的返回(也就是说传送的是拷贝的数值)所以在main方法中的a的数值并没有发生改变
此时执行main方法时打印出来的是a=10
流程图
.......................................................................................................................
2.引用类型数据的传递
传递的时储存路径
public class methoddemo5 {
public static void main(String[] args) {
//引用数据类型的传递仍满足值传递
//但引用数据类型有所不同
int [] arrs = new int [] {10,20,30};
change(arrs);
System.out.println("main" + arrs[1]);
//流程结果为20 222 222
}
public static void change(int[] arrs) {
System.out.println(arrs[1]+ "方法内1");
arrs[1] = 222;
System.out.println(arrs[1]+ "方法内2");
}
}
执行流程
存在方法区 栈内存 堆内存
1.将方法(包括main方法储存在方法区)
2.和基本数据类型一样进行
区别在于
路径存在于堆内存
引用数据类型中:如数组储存的是路径拷贝的储存地址 , 当在方法中进行新的赋值时是同一个地址此时进行赋值时数值就赋值给了该路径所以无论有没有void引用类型,数据赋值都会发生改变
....................基于黑马程序员磊哥视频课