热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java值传递机制的说明及示例代码

本文对Java值传递机制进行了详细说明,包括形参和实参的定义和传递方式,以及通过示例代码展示了交换值的方法。

ps:值传递机制是面向对象上的重点和难点,这篇文章的将会对值传递机制做一个说明


文章目录



❤️💬⭐️


形参:方法定义时的参数;
实参:方法调用时实际传给形参的参数值。
值传递机制:
形参是基本数据类型,实参赋给形参变量的是实参真实存储的“数据值”;

看例子

public class ValuePassed {public static void main(String[] args) {int m = 10;int n = 20;swap(m,n);//调用方法,交换m和n的值System.out.println("m="+m+",n="+n);//m=10,n=20}public static void swap(int m ,int n){int temp = m;m = n;n = temp;}
}

说明:在main()里声明了m,n,在swap()里定义了两个同名形参m’和n’;将属性m,n传递给形参m’,n’,关键处就是这里,swap(m’,n’),是将m和n的值拷贝一份给形参m’,n’,不论形参如何改变不会影响到其原本的属性m和n;当swap(m’,n’)运行结束后,整个被回收机制处理,因此最终输出的结果是:m=10;n=20。
内存解析:
在这里插入图片描述

形参是引用数据类型,实参赋给形参变量的是实参存储的“地址值”。

class Value_propagation {public static void main(String[] args) {Data data=new Data();data.m=10;data.n=20;Value_propagation test=new Value_propagation();test.swap(data);System.out.println("m="+data.m+",n="+data.n);//m=20,n=10;}public void swap(Data data) {int temp=data.m;data.m=data.n;data.n=temp;}
}class Data{int m;int n;
}

说明:此时的swap(data)方法里,是将一个对象作为了一个实参赋给形参data’,而对象又存储的是地址值,因此方法main()和方法swap(data)指向了同一块内存空间,在swap(data)里进行操作就相当于在main()里面进行操作;即使swap(data)在运行结束后,被回收处理掉了,main()里的m和n的值同样被互换了。
内存解析:
在这里插入图片描述


写的内容偏向口水话,希望能帮助大家和自己更好地理解值传递机制
over✋



推荐阅读
  • 异常要理解Java异常处理是如何工作的,需要掌握一下三种异常类型:检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常ÿ ... [详细]
  • 本文将探讨Java编程语言中对象和类的核心概念,帮助读者更好地理解和应用面向对象编程的思想。通过实际例子和代码演示,我们将揭示如何在Java中定义、创建和使用对象。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 本文探讨了在C++中如何有效地清空输入缓冲区,确保程序只处理最近的输入并丢弃多余的输入。我们将介绍一种不阻塞的方法,并提供一个具体的实现方案。 ... [详细]
  • 本问题探讨了在特定条件下排列儿童队伍的方法数量。题目要求计算满足条件的队伍排列总数,并使用递推算法和大数处理技术来解决这一问题。 ... [详细]
  • 深入理解Lucene搜索机制
    本文旨在帮助读者全面掌握Lucene搜索的编写步骤、核心API及其应用。通过详细解析Lucene的基本查询和查询解析器的使用方法,结合架构图和代码示例,带领读者深入了解Lucene搜索的工作流程。 ... [详细]
  • Java 实现二维极点算法
    本文介绍了一种使用 Java 编程语言实现的二维极点算法。该算法用于从一组二维坐标中筛选出极点,适用于需要处理几何图形和空间数据的应用场景。文章不仅详细解释了算法的工作原理,还提供了完整的代码示例。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • JSOI2010 蔬菜庆典:树结构中的无限大权值问题
    本文探讨了 JSOI2010 的蔬菜庆典问题,主要关注如何处理非根非叶子节点的无限大权值情况。通过分析根节点及其子树的特性,提出了有效的解决方案,并详细解释了算法的实现过程。 ... [详细]
  • 本题要求实现一个函数,用于检查给定的字符串是否为回文。回文是指正向和反向读取都相同的字符串。例如,“XYZYX”和“xyzzyx”都是回文。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
author-avatar
荆灬樊小姐_526
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有