码迷,mamicode.com
首页 > 其他好文 > 详细

方法参数的值传递机制

时间:2020-06-15 22:56:09      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:src   基本数据   main   地址   static   pre   alt   内存   创建   

* 如果是基本数据类型  ,此时赋值的时变量所保存的数据值
* 如果是引用数据类型 ,此时赋值的是变量所保存的数据的地址值

public static void main(String[] args) {
    // ********基本数据类型*****
    int m = 10;
    int n = m;
    System.out.println("m:" + m + "n:" + n);
    m = 20;
    System.out.println("m:" + m + "n:" + n);
    // ************引用数据类型***************
    Order o1 = new Order();
    o1.orderId = 1001;

    Order o2 = o1; // 创建的对象的地址值  赋给了o2 ,,都指向堆空间中同一个地址值

    o2.orderId = 1002;
    System.out.println(o1.orderId + "" + o2.orderId);
  }
}

class Order {
  int orderId;
}

  

方法的形参的传递机制,值传递
  1.形参:方法定义的时候,声明的小括号内的参数
  2.实参,方法调用的时候,实际传递给形参的数据
结论:
  ①如果参数是基本数据类型  ,此时实参赋给形参是真实存储的数据值
  ②如果参数是引用数据类型 ,此时实参赋给形参的是实参存储数据的地址值
 
public static void main(String[] args) {
    // 调换两个变量的值
    int m = 10;
    int n = 20;
    ValueTransferTest1 vtt = new ValueTransferTest1();
  // 调用方法 m,n没有调换 vtt.swap(m, n); System.out.println("m:" + m + "n:" + n); //m:10 n:20 } public void swap(int m, int n) { int temp = m; m = n; n = temp; }



  其中出现的问题是,调用  swap方法之后,上面的代码输出的是m=10,n=20,因为,在调用swap方法的时候,m,n已经调用成功,但是  swap 方法执行完成之后,就被销毁了,,,, 在main方法中的变量m,n依然有效,,所以输出m=10;n=20.

 

内存解析:

技术图片

 

 

但是对于引用数据类型,内存解析
技术图片

 


 

由于赋的是地址值,所以调用swap方法交换成功后,输出 m=20;n=10.

方法参数的值传递机制

标签:src   基本数据   main   地址   static   pre   alt   内存   创建   

原文地址:https://www.cnblogs.com/lxsfve/p/13138070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!