目??? 录
1.值传递
2.址传递???????
?1.值传递
基本类型作为参数传递,属于值传递!传递的是变量的值,形参的改变不会影响实参的值!
public class Test {
public static void main(String[] args) {
//创建对象
Test test=new Test();
int num=100;
System.out.println("传入num参数之前:"+num);
//调用chuancan方法,传入参数num
chuancan(num);
System.out.println("传入num参数之后:"+num);
}
public static void chuancan(int n){ //传入参数n
System.out.println("传入num参数到方法中运算前"+n);
n+=20;
System.out.println("传入num参数到方法中运算后"+n);
}
// 传入num参数之前:100
// 传入num参数到方法中运算前100
// 传入num参数到方法中运算后120
// 传入num参数之后:100
//传入num参数前后没有变化!不影响实参的值
}
2.址传递
引用类型作为参数传递,属于引用传递(址传递).传递的是地址值,形参的改变会影响实参的值!
public class Test1 {
public static void main(String[] args) {
//定义数组
int[] arr={1,2,3,4,5};
//调用方法chuancan,传入引用类型的参数(数组)
chuancan(arr);
//遍历一下传参后的数组元素
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
//结果是1 4 3 8 5
//传入的形参影响了实参的值
}
private static void chuancan(int[] arr) { //传入数组
for (int i=0;i<arr.length;i++){
if (arr[i]%2==0){
arr[i]*=2;
}
}
}
}
如下图中的内存图!数组的地址值返回到了栈内!对其堆内的值进行修改需要找到地址值,然后进行修改!所以是完全的修改掉了!
? ?(小编也在努力学习更多哟!以后会多多分享哒!)??
希望对友友们有所帮助!!!!
|