java 传入参数_Java 中方法参数的传递
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 中方法参数的传递相关推荐
- java 什么是参数_java中的参数是什么?
本篇文章介绍了Java中什么是参数,以及参数的两种类型及他们之间的关系,希望对学习Java开发的同学有帮助. java中的参数是什么? 参数分两种:一种叫形式参数,一种叫实际参数 方法名后面括号里面用 ...
- java args用法_Java中args参数数组的用法说明代码
本篇文章小编给大家分享一下Java中args参数数组的用法说明代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. main方法args参数用于接收用户 ...
- java如何抛出异常_java中 方法中抛出异常处理方法
展开全部 Java语言提供e69da5e887aa62616964757a686964616f31333366306461两种异常处理机制:捕获异常和声明抛弃异常. 1.捕获异常: (1)在Java程 ...
- java 静态方法覆盖_Java中方法的覆盖和静态方法的隐藏
下面的程序对巴辛吉小鬣狗和其它狗之间的行为差异进行了建模.如果你不知道 什么是巴辛吉小鬣狗,那么我告诉你,这是一种产自非洲的小型卷尾狗,它们从 来都不叫唤.那么,这个程序将打印出什么呢? class ...
- java类同步_Java中方法,对象,类的同步
关于在多线程环境中使用同步,我需要一些澄清.我在下面有一个小例子类.但我实际上发现很难做出以下内容如何工作的测试用例;我想要测试用例的原因是要了解同步如何处理这些不同的场景 >如果一个线程调用S ...
- java 值 继承_java中继承的数值传递引用
展开全部 这个题目如下思路与实现 思路:依照圆和圆柱的描述抽象成Java程序里的对象Cylinder与Circle,这也32313133353236313431303231363533e4b893e5 ...
- Java中方法参数的传递
Java中方法参数的传递: 众所周知,Java语言中只有值传递,看起来很好理解的一句话,那么来看一个例子: 输出结果: 这是一个经典问题,我想说说自己的理解: 首先,变量sa和sb分别包含一个字符串对 ...
- java对于数组的定义_Java中方法的定义与使用,以及对数组的初步了解。
方法 方法的含义 定义: 方法就是用来完成解决某件事情或实现某个功能的办法. 方法实现的过程中,会包含很多条语句用于完成某些有意义的功能--通常是处理文本,控制输入或计算数值. 我们可以通过在程序代码 ...
- python @classmethod 和 @staticmethod区别,以及类中方法参数cls和self的区别
一.@classmethod 和 @staticmethod 1.staticmethod 作用:让类中的方法变成一个普通函数(普通函数没有绑定在任何一个特定的类或者实例上.所以与不需要对象实例化就可 ...
最新文章
- AI 热潮之下,初创企业能否躲过科技巨头的碾压?
- usb大容量存储设备驱动_Win10默认已禁用USB驱动器缓存 1903版本起无需点击安全弹出...
- python课程价格哪个好-上海Python线上远程课
- keras中lstm参数_如何使用Keras为自定义NER构建深度神经网络
- c#样条曲线命令_如何定制CAD功能区界面中的命令?
- 从源码出发:JAVA中对象的比较
- 一款开源免费且快速,高效和安全的跨平台备份程序:Restic使用教程
- AI表情迁移、电影字幕自动翻译等,原来是这么玩的!
- DJFP2FP2计算机电缆,ZR-DJFP2FP2-22 (ZR-DJFP2FP2-22计算机电缆)(百勤石油)
- centos7+jexus5.8.3部署ASP.NET的MVC项目
- IIS发布网站遇到的异常
- java面向对象(抽象类)
- 程序员编程实用工具箱
- ecshop二次开发指南
- SiteGround主机和HostGator哪个好?(权威技术性分析)2022最新对比
- MySQL报错:Data too long for column
- java如何直接打印数组
- PHPWord生成文档 表格,复制模板文档
- 使用 matplotlib绘制简单图形,保存图片的方法
- 东京丛林 扮演动物的游戏
热门文章
- 谷歌开发者大会焦点:大中华区新掌门亮相,Android 10原生支持5G,TF2.0大更新...
- php框架控制器是什么意思,控制器定义
- python学习笔记一 一变量与运算符
- flowable支持的mysql版本_Flowable3-配置
- 支付二维码php能实现吗_(实用篇)微信支付扫码支付php版
- 20164319 刘蕴哲 Exp9 Web安全基础
- antd design form表单手动处理错误
- [No00009D]使用visual studio 2015 update3打包程序安装包的简单方法(不需要InstallShield)...
- (转载)网络编程释疑之:同步,异步,阻塞,非阻塞
- struts2 常用标签的一般用法