码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的参数传递

时间:2019-01-14 14:34:40      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:system   add   代码   public   基本   time   因此   string类   调用   

1、基本类型传值,对象类型传地址

按值传递:当将一个参数传递给一个方法时,方法接收的是原始值的一个副本。因此,如果方法修改了该参数,仅改变副本,而原始值保持不变。

按引用传递:当将一个参数传递给一个方法时,方法接收的是原始值的内存地址,而不是值的副本。因此,如果方法修改了该参数,调用代码中的原始值也随之改变。

“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。

2、验证基本类型传值

/**
* 基本类型传值
* @author Thanlon
*/
public class PassValAndAddr {
  public void testMethod(int a) {
    a = 5;//对传过来的a赋予新值
    System.out.println("testMethod方法中:a=" + a);
  }

  public static void main(String[] args) {
    PassValAndAddr passValAndAddr = new PassValAndAddr();
    int a = 3;
    passValAndAddr.testMethod(a);
    System.out.println("main方法中:a=" + a);
  }
}

控制台打印:

testMethod方法中:a=5
main方法中:a=3

在接收参数的方法中修改了传递过来的值,但这个值只是原始值的副本,原始值不会发生改变。

3、验证对象类型传地址

PassValAndAddr2 .java:

/**
* 对象类型传递地址
* @author Thanlon
*/
public class PassValAndAddr2 {
  public void passAddr(ObjectA a) {
    a.age = 22;
    System.out.println("传递对象给passAddr方法对象的age属性值为:" + a.age);
  }

  public static void main(String[] args) {
    PassValAndAddr2 passValAndAddr = new PassValAndAddr2();
    ObjectA objectA = new ObjectA();
    passValAndAddr.passAddr(objectA);
    System.out.println("objectA原始的age值为:" + objectA.age);
  }
}

PassValAndAddr2 .java:

public class ObjectA {
  public int age = 0;
}

控制台打印:

传递对象给passAddr方法,对象的age属性值为:22
objectA原始的age值为:22

在接收参数的方法中修改了传过来的对象的age属性,原来对象的age属性值发生了改变,说明方法接收的是原始值的内存地址,而不是值的副本。

注意:在Java中只有基本类型和按照下面这种定义方式的String类型数据是按值传递,其它的都是按引用传递。

直接使用双引号定义字符串方式:String str = "Java"

Java中的参数传递

标签:system   add   代码   public   基本   time   因此   string类   调用   

原文地址:https://www.cnblogs.com/qikeyishu/p/10265490.html

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