java中方法参数传递看似有两种,值传递和引用传递。而实际上都是值传递。

所谓值传递,传递的是变量的副本就是说,在将变量a作为参数传进方法中时,方法中接收到的是a的副本,在方法中对参数的修改实际上修改的是a的副本,所以不会影响到a的值。

而引用传递,传递的是变量的内存地址。在将变量a作为参数传递给方法时,传递的是a的内存地址,在方法中对参数的修改,实际上是修改的a本身。

因为java的变量有两类,一类是基本数据类型,一类是引用类型。所以就把基本数据类型作为参数进行传递时,当做了“值传递“;把引用类型作为参数进行传递时,当做了“引用传递“。 事实上无论是传递基本数据类型还是引用类型,java中都是按“值传递”进行操作的。

在引用变量r作为 参数传到方法中时,传递的是r的副本。只不过r和r的副本都指向了同一个对象。

public class TestParamPassing {

public static void main(String[] args){

int b = 4;

testValueParam(b);

System.out.println("======== b : " + b);

List list = new ArrayList();

list.add("a");

list.add("b");

testReferenceParam(list);

System.out.println("======== list : " + list);

}

public static void testReferenceParam(List list){

list.add("c");

list = new ArrayList<>();

list.add("d");

System.out.println("-------- list : " + list);

}

public static void testValueParam(int a){

System.out.println("======== a: " + a);

a=3;

System.out.println("======== a after : " + a);

}

}

执行结果为:

======== a: 4

======== a after : 3

======== b : 4

-------- list : [d]

======== list : [a, b, c]

在方法testValueParam(int a)中,因为是“值传递”,所以传到方法中的是原始值的副本,所以在方法中对a的修改,不会影响到原始值。

在方法testReferenceParam(List list)中,因为是“值传递”,所以传到方法中的是原始值的副本,所以两者都指向了同一个对象,因此在方法中对对象的修改,会影响到原始值指向的对象。但是,当在方法中,将副本指向了其他的对象,再对副本指向的对象进行修改,就不会影响到原始值所指向的对象了。所以在传递引用变量时,也是“值传递”。

java 传入参数_Java 中方法参数的传递相关推荐

  1. java 什么是参数_java中的参数是什么?

    本篇文章介绍了Java中什么是参数,以及参数的两种类型及他们之间的关系,希望对学习Java开发的同学有帮助. java中的参数是什么? 参数分两种:一种叫形式参数,一种叫实际参数 方法名后面括号里面用 ...

  2. java args用法_Java中args参数数组的用法说明代码

    本篇文章小编给大家分享一下Java中args参数数组的用法说明代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. main方法args参数用于接收用户 ...

  3. java如何抛出异常_java中 方法中抛出异常处理方法

    展开全部 Java语言提供e69da5e887aa62616964757a686964616f31333366306461两种异常处理机制:捕获异常和声明抛弃异常. 1.捕获异常: (1)在Java程 ...

  4. java 静态方法覆盖_Java中方法的覆盖和静态方法的隐藏

    下面的程序对巴辛吉小鬣狗和其它狗之间的行为差异进行了建模.如果你不知道 什么是巴辛吉小鬣狗,那么我告诉你,这是一种产自非洲的小型卷尾狗,它们从 来都不叫唤.那么,这个程序将打印出什么呢? class ...

  5. java类同步_Java中方法,对象,类的同步

    关于在多线程环境中使用同步,我需要一些澄清.我在下面有一个小例子类.但我实际上发现很难做出以下内容如何工作的测试用例;我想要测试用例的原因是要了解同步如何处理这些不同的场景 >如果一个线程调用S ...

  6. java 值 继承_java中继承的数值传递引用

    展开全部 这个题目如下思路与实现 思路:依照圆和圆柱的描述抽象成Java程序里的对象Cylinder与Circle,这也32313133353236313431303231363533e4b893e5 ...

  7. Java中方法参数的传递

    Java中方法参数的传递: 众所周知,Java语言中只有值传递,看起来很好理解的一句话,那么来看一个例子: 输出结果: 这是一个经典问题,我想说说自己的理解: 首先,变量sa和sb分别包含一个字符串对 ...

  8. java对于数组的定义_Java中方法的定义与使用,以及对数组的初步了解。

    方法 方法的含义 定义: 方法就是用来完成解决某件事情或实现某个功能的办法. 方法实现的过程中,会包含很多条语句用于完成某些有意义的功能--通常是处理文本,控制输入或计算数值. 我们可以通过在程序代码 ...

  9. python @classmethod 和 @staticmethod区别,以及类中方法参数cls和self的区别

    一.@classmethod 和 @staticmethod 1.staticmethod 作用:让类中的方法变成一个普通函数(普通函数没有绑定在任何一个特定的类或者实例上.所以与不需要对象实例化就可 ...

最新文章

  1. AI 热潮之下,初创企业能否躲过科技巨头的碾压?
  2. usb大容量存储设备驱动_Win10默认已禁用USB驱动器缓存 1903版本起无需点击安全弹出...
  3. python课程价格哪个好-上海Python线上远程课
  4. keras中lstm参数_如何使用Keras为自定义NER构建深度神经网络
  5. c#样条曲线命令_如何定制CAD功能区界面中的命令?
  6. 从源码出发:JAVA中对象的比较
  7. 一款开源免费且快速,高效和安全的跨平台备份程序:Restic使用教程
  8. AI表情迁移、电影字幕自动翻译等,原来是这么玩的!
  9. DJFP2FP2计算机电缆,ZR-DJFP2FP2-22 (ZR-DJFP2FP2-22计算机电缆)(百勤石油)
  10. centos7+jexus5.8.3部署ASP.NET的MVC项目
  11. IIS发布网站遇到的异常
  12. java面向对象(抽象类)
  13. 程序员编程实用工具箱
  14. ecshop二次开发指南
  15. SiteGround主机和HostGator哪个好?(权威技术性分析)2022最新对比
  16. MySQL报错:Data too long for column
  17. java如何直接打印数组
  18. PHPWord生成文档 表格,复制模板文档
  19. 使用 matplotlib绘制简单图形,保存图片的方法
  20. 东京丛林 扮演动物的游戏

热门文章

  1. 谷歌开发者大会焦点:大中华区新掌门亮相,Android 10原生支持5G,TF2.0大更新...
  2. php框架控制器是什么意思,控制器定义
  3. python学习笔记一 一变量与运算符
  4. flowable支持的mysql版本_Flowable3-配置
  5. 支付二维码php能实现吗_(实用篇)微信支付扫码支付php版
  6. 20164319 刘蕴哲 Exp9 Web安全基础
  7. antd design form表单手动处理错误
  8. [No00009D]使用visual studio 2015 update3打包程序安装包的简单方法(不需要InstallShield)...
  9. (转载)网络编程释疑之:同步,异步,阻塞,非阻塞
  10. struts2 常用标签的一般用法