java学习-参数传递
局部变量都存在于栈空间!
方法的参数传递(重点,难点)
形参:方法声明时小括号内的参数。
实参:调用方法时,实际传入的参数的值。
2.java中的参数传递遵循值传递机制
1)形参是基本数据类型:将实参的值传递给形参的的基本数据类型变量
2)形参是引用数据类型:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址)传递给形参的引用类型变量
基础实例1:
1 public class TestArgsTransfer { 2 public static void main(String[] args){ 3 int i = 5; 4 int j = 3; 5 6 System.out.println("i:"+i+"\t"+"j:"+j); 7 //交换两个数的值 8 // int temp = i; 9 // i = j; 10 // j = temp; 11 TestArgsTransfer t = new TestArgsTransfer(); 12 t.swap(i,j);//将i的值传递给m,j的值传递给n; 13 14 System.out.println("i:"+i+"\t"+"j:"+j); 15 } 16 public void swap(int m,int n){ 17 int temp = m; 18 m = n; 19 n = temp; 20 System.out.println("i:"+m+"\t"+"j:"+n); 21 } 22 }
基础实例2:
1 package exercise; 2 3 public class TestArgsTransfer1 { 4 public static void main(String args[]){ 5 TestArgsTransfer1 tt = new TestArgsTransfer1(); 6 DataSwap d = new DataSwap(); 7 System.out.println("ds.i:"+d.i+"\t"+"ds.j:"+d.j); 8 tt.swap(d); 9 System.out.println(d); 10 System.out.println("ds.i:"+d.i+"\t"+"ds.j:"+d.j); 11 } 12 public void swap(DataSwap ds){ 13 int temp = ds.i; 14 ds.i =ds.j; 15 ds.j = temp; 16 System.out.println(ds);//打印引用变量d的值 17 } 18 } 19 class DataSwap{ 20 int i = 5; 21 int j = 3; 22 }
实例3:
1 package exercise; 2 3 public class TestValue { 4 public static void main(String[] args){ 5 TestValue t = new TestValue(); 6 t.first(); 7 } 8 public void first(){ 9 int i = 5; 10 Value v = new Value(); 11 v.i = 5; 12 second(v,i); 13 System.out.println(v.i); 14 } 15 public void second(Value v,int i){ 16 i = 0; 17 v.i = 20; 18 Value val = new Value(); 19 v = val; 20 System.out.println(v.i+"\t"+i); 21 } 22 } 23 class Value{ 24 int i = 15; 25 }
实例3分析图:
栈 堆