Java中参数传递类型的定义
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,本篇内容介绍了"Java中参数传递类型的定义"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先看定义
千家信息网最后更新 2025年02月06日Java中参数传递类型的定义
本篇内容介绍了"Java中参数传递类型的定义"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
首先看定义:
值传递,是指方法接收的是调用者提供的值
引用传递,是指方法接收的是调用者提供的变量地址
以前学习C++时把参数传递分为值传递和引用传递,国内的不少java教材愿意把对象的传递理解是引用传递,为什么它们会这么说呢?可以看下面一个例子:
import java.util.Calendar; public class ChangeValue { public static void main(String[] args) { Calendar oc = Calendar.getInstance(); System.out.println("origin:"+oc.getTime()); changeDate(oc); System.out.println("after:"+oc.getTime()); } static void changeDate(Calendar pd){ pd.set(1970, 1, 1); } }
某时刻程序输出:
origin:Thu Jan 05 21:15:59 CST 2012 after:Sun Feb 01 21:15:59 CST 1970
oc对象的值改变了,很多人就认为java对象传递实际上是引用传递。
过程应该是这样的:
运行changeDate这个函数时,方法得到的是对象引用的拷贝,oc和pd同时引用同一个对象,所以函数运行结束后,pd已经消失了,但是对引用对象的更改却也影响了oc所引用的同一对象,结合对之前的定义理解,这应该是值传递的过程(传递的是对象引用的拷贝)。
以下附上另一个例子,两个对象的交换函数(C++中可以轻易实现):
public class Swap { public static void main(String[] args) { ObjectSample o1 = new ObjectSample("hello"); ObjectSample o2 = new ObjectSample("你好"); System.out.println("before swap o1:"+o1.getTitle()+" o2:"+o2.getTitle()); Swap.swapObject(o1, o2); System.out.println("after swap o1:"+o1.getTitle()+" o2:"+o2.getTitle()); } static void swapObject(ObjectSample o1, ObjectSample o2){ ObjectSample temp = new ObjectSample("temp"); temp = o1; o1 = o2; o2 = temp; } } class ObjectSample{ private String title; ObjectSample(String title){ this.title = title; } public String getTitle(){ return title; } }
输出结果:
before swap o1:hello o2:你好 after swap o1:hello o2:你好
java在交换程序中并没有交换两个对象的值,交换的是两个对象的拷贝,不能实现让对象参数引用一个新对象,究其原因还是因为java是采用了值传递而非引用传递。
"Java中参数传递类型的定义"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
对象
参数
两个
你好
函数
拷贝
方法
过程
输出
类型
例子
内容
实际
更多
用者
知识
程序
C++
学习
运行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中型软件开发各岗位人员
浙江工业大学网络安全实验室
瑞安只婪网络技术有限公司
云服务器租赁哪个好
华为服务器在哪里打开网卡
新一代网络安全的三种型号
网络技术基础课程实训报告
网络安全知识专题学习会议
软件开发师学习什么
常州app软件开发制作
医院数据库项目实例
计算机网络技术数据分析
怎么连接远程电脑服务器
关于网络安全工作做得好的成语
小学网络安全黑板报简讯
查询网站服务器时间
我的世界服务器志愿者是什么意思
纯java数据库
手机程序数据库
使命召唤怎样连接战网服务器
关于网络安全发言稿300字
电子封装读研软件开发
nodejs 服务器部署
科技互联网课件
华为服务器在哪里打开网卡
biubiu加速器服务器维修
医院数据库项目实例
江西网络安全讲师
在万方数据库搜索字段是什么
软件开发的工作怎么找