详解Java中参数在方法中传递的过程

图文详解Java参数传递类型 本文通过图文的形式详细讲解了Java参数传递类型,希望能对学习Java的同学们有所帮助。 文章目录 1. 问题描述 2. 两者的区别 3. 案例分析 3.1 案例一:参数为基本数据类型 3.2 案例二:参数为引用类型 4. 详细解读 5. 总结 阅读详情

    参数的传递都是 值传递,在调用方法的时候,参数会被创造出一个副本,原本的值是不会改变的。基本数据类型,也称为值类型。

1.方法中传入的是基本数据类型,原变量的值不会发生改变。

2.如果方法中传入的是引用数据类型(即类类型),那么传入方法中,如果对对象的相关属性进行了修改,那么原对象的相关属性也会发生改变。   

下面我们结合代码 以及内存解析图 来加深下对参数在方法中传递的过程的理解。

package com;

public class Demo11 {
    void fun1(int i, int j) {
        i = i + 5;
        j = j + 5;
        System.out.println("fun1-i:" + i);
        System.out.println("fun1-j:" + j);
    }

    void fun1(P p) {
        p.i = p.i + 5;
        p.j = p.j + 5;
        System.out.println("fun1-p-i:" + p.i);
        System.out.println("fun1-p-j:" + p.j);
    }

    public static void main(String[] args) {
        Demo11 demo11 = new Demo11();
        int i = 10;
        int j = 20;
        demo11.fun1(i, j);
        System.out.println("main-i:" + i);
        System.out.println("main-j:" + j);
        System.out.println("====================");
        P p = new P();
        p.i = 10;
        p.j = 20;
        demo11.fun1(p);
        System.out.println("main-p-i:" + p.i);
        System.out.println("main-p-j:" + p.j);

    }
}

class P {
    int i;
    int j;
}

输出结果:

fun1-i:15
fun1-j:25
main-i:10
main-j:20
====================
fun1-p-i:15
fun1-p-j:25
main-p-i:15
main-p-j:25
进行加法运算前 i,j,p在内存中的位置及值:


进行运算后的数值及位置:



i和j变量的初始值为10,20,存于栈区,在经过加法运算后,原变量的值不变,依然为10,20.

 void fun1(int i, int j) {
        i = i + 5;
        j = j + 5;
        System.out.println("fun1-i:" + i); // 15
        System.out.println("fun1-j:" + j); // 25
    }
 int i = 10;
        int j = 20;
        demo11.fun1(i, j);
        System.out.println("main-i:" + i); // 10
        System.out.println("main-j:" + j); // 20

类类型p在经过加法运算后,原变量的值改变。通过内存解析图可以看出,栈内存中的数据传输自身在堆内存中地址后,统一指向堆内存,类类型的存储是一种地址的传递(本质上也是一种数值的传递),最终指向于堆内存中的同一地址,所以数值改变!

oid fun1(P p) {
        p.i = p.i + 5;
        p.j = p.j + 5;
        System.out.println("fun1-p-i:" + p.i); // 15
        System.out.println("fun1-p-j:" + p.j); // 25
    }
 P p = new P();
        p.i = 10;
        p.j = 20;
        demo11.fun1(p);
        System.out.println("main-p-i:" + p.i); // 15
        System.out.println("main-p-j:" + p.j); // 25



Java方法参数传递详解与实践 本文深入解析了Java中参数传递的机制,包括数组参数、final参数、可变参数方法的使用及其实现原理。通过具体的代码示例,展示了如何在方法调用中传递数组,如何利用final关键字防止参数被意外修改,以及如何声明和使用可变参数方法。文章还讨论了main方法的结构和程序参数的传递,为理解Java方法调用和参数传递提供了详尽的指导。 阅读详情

相关推荐

R语言vegan包实战:用varpart函数搞定生态学VPA分析(附完整代码与数据集)

本文详细介绍了如何使用R语言vegan包中的varpart函数进行生态学方差分解分析(VPA),包括数据准备、模型构建、结果解读和可视化呈现。通过完整的代码示例和数据集,帮助研究者理解不同环境因子对生物群落变化的相对贡献,并掌握显著性检验等高级技巧。

weixin_42525005的博客 447

【java】方法的参数传递

方法:必须有其所在类或对象调用才有意义。 若方法含有参数: 形参:方法声明时的参数 实参:方法调用时实际传给形参的参数值 Java里方法的参数传递方式只有一种:值传递。 基本数据类型,值是保存在栈中; 引用对象,值保存在堆中,栈中存的是对象在堆中的地址。 方法参数传递之基本数据类型 public class Main { public static void main(String args[]) { int a = 0; swap(a); System.out.

qq_45746744的博客 4988

WordPress主题开发实战:从零开始手把手教你创建自定义主题(含常用函数大全)

本文是一份WordPress主题开发实战指南,从零开始手把手教你创建自定义主题。内容涵盖主题核心文件结构、模板层级与循环机制、函数与钩子的运用,并附有详细的常用函数大全,帮助开发者彻底掌握主题开发的核心技能,实现从使用者到创造者的转变。

weixin_27943395的博客 255

JAVA参数在方法中的传递过程

在Java语言中,参数传递时,一般存在两种参数传递的规则 1.按值传递 使用该方式传递的参数,参数原始的值不发生变化 适用范围:八种基本数据类型和String String也是传递的地址,但是String对象一旦被改变,就是生成新的对象 2.按地址值传递 使用该方式传递的参数,在方法内部修改参数的值时,参数原始的值发生改变 适用范围:除String以外的所有复合数据类型,包

janghaifeng的博客 396

Altium Designer铺铜陷阱:为什么你的死铜总是清除不干净?

本文深入探讨Altium Designer中铺铜操作导致死铜无法清除的常见问题,分析死铜形成的五大诱因,并提供高级参数优化和网络连接性验证技巧。通过调整边界计算精度和泪滴算法设置,有效解决死铜残留问题,提升PCB设计质量与制造良率。

weixin_29169505的博客 359

【STM32CubeIDE入门】(一)工程创建&工程配置

​写在前面:如果是刚接触stm32cubeide的同学推荐与这一篇文章共同阅读,能够更加快速认识上手stm32cubeide。 1、打开stm32cubeide,选择好工作目录进入主界面后,点击创建工程。

涛涛子的博客 1万+

Java参数传递方式详解

Java值传递

qq_56721388的博客 4349

31、Labview如何搭建程序框架?--状态机到数据采集等常用框架

本文废话不多,直接列举几种框架搭建方式,为了尽量向大家提供干货,本文直接从简介和手把手教搭建框架两方面来讲解,本文提到五种经典框架模式,学会这五种就很够了,分别是:状态机框架(State Machine)、生产者-消费者框架(Producer-Consumer)、主-从框架(Master-Slave)、事件驱动框架(Event-Driven)、分层架构(Layered Architecturep)。这个框架是基于状态机结构的。顾名思义“状态机”就是个“切换程序状态的机器”。本质是一个。

关注我,更多技术问题欢迎私聊~ 3098

Java中的方法参数传递机制

本节介绍了Java中的方法参数传递机制,包括:方法的调用、按值传递、引用传递、可变参数和引用类型数组。

hitmengfanchao的博客 2589

【异常】OpenClaw网关仪表盘 pairing required 报错排查与解决方案

在OpenClaw网关仪表盘页面,完成WebSocket URL、网关令牌等必填项配置后,点击「连接」按钮尝试建立网关连接时,页面下方出现红色报错提示框,核心报错内容为,无法完成网关连接建立,且该报错在令牌配置正确、网络链路通畅的场景下仍会触发。该报错常见于非本地回环地址的访问场景,包括局域网远程访问、公网域名/IP访问、云服务器部署的网关远程管理等场景,本地127.0.0.1回环地址访问通常可正常连接。

奶爸的编程之路,也就一周冷个三天 1077

资产会计 Transaction Type 与业务交易的 Post to Affiliated Company 不一致导致的 AAPO176:成因剖析与修复指引

本文解析了SAP资产会计中常见的"AAPO176"错误提示,指出当交易类型(TType)与业务交易(Business Transaction)的"关联公司过账"(Post to Affiliated Company)标志不一致时,系统会拒绝过账。作者详细说明了该标志的作用机制,并提供了四种解决方案:修正交易类型使用、匹配正确的业务交易、调整系统配置或建立映射关系。文章还通过实际案例展示了配置错误对集团合并报表的影响,并附带了用于检查配置一致性的ABAP脚本。该错误通常

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 392

Java中的参数传递

Java中的参数传递

weixin_42761614的博客 1830

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java方法中参数的传递(值传递、地址传递)详解

基本数据类型作为形参时就好比你有张纸上有非常重要数据,而你的女儿非要在这张纸上画画,这时候机制的爸爸想到了复印。于是产生两全其美的结果,你的珍贵的数据没有被摧毁而你的也女儿心满意足的画上画。这意味着当你对一个String对象进行修改时,实际上是创建了一个新的String对象,而不是在原有对象上进行修改。小编近期在学习Java中方法的参数传递时难以理解,相信大家也和小编一样对什么是值传递和地址传递很困扰。,按地址传递意味着将引用数据类型变量的地址传递给方法,对地址进行任何修改都。同样这里值得注意到的是这个。

weixin_60625208的博客 4400

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java方法参数传递方式--按值传递、引用传递

java的方法参数传递方式有两种,按值传递和引用传递 1.按值传递

zhenge1990的博客 3万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java方法的参数传递

Java中方法的参数传递只有一种方式:值传递 将实际参数值的副本(复制品)传入方法中,而参数本身不受影响。所谓形参就是方法声明定义的时候的参数,实参就是方法调用时实际传递给形参的参数。介绍之前先简单了解下Java内存模型 那对于常见的一个学习的类就是Person,关于以下初始化如何实现的呢? //对象声明 Person p = new Person(); //变量定义 int i = 1; 栈中存放的对象的地址,真正的对象存在堆中,这就是引用对象 1.基本数据类型方法参数传递 接着.

止语的博客 2781

Java值传递方式详解:方法参数或参数的传递

java里面的方法参数 在程序设计语言里面,有一些参数传递给方法的专业术语:按值调用;引用调用;以前还有的按名调用(Algol就是使用的这种) 其中java使用的就时按值调用:这种方法的特点是只得到所有参数的拷贝,方法不能修改传递给它的任意参数变量的内容 public class Main { public static void main( String[] args) { int ...

qq_42128262的博客 842

参数在方法中的传递过程

1、基本数据类型(值类型)的值传递[java] view plain copy        public class Client2 {      public static void main(String[] args) {          /***********测试方法中参数传递的机制*************/          Client2 client2 = new Clien...

zhou_jiepeng的博客 1555

Java参数传递机制详解

参数传递是编程中一个基本概念,指的是在调用方法时,将数据从调用者传递给被调用方法的过程。不同的编程语言可能采用不同的参数传递机制,主要有值传递和引用传递两种。Java的参数传递机制是基于值的传递,而不是基于引用的传递。对于基本数据类型,传递的是值的副本,方法内部对参数的修改不会影响原始变量。对于对象类型,传递的是引用的副本,方法内部对参数引用的修改不会影响原始变量,但对参数对象内容的修改会影响原始对象。理解Java的值传递机制对于编写正确的代码非常重要,特别是在需要修改参数值的情况下。

weixin_74417835的博客 1162

Java方法参数的传递方式

Java中方法参数的传递方式有两种,按值传递和引用传递。 值传递:值传递传递的是基本的数据类型和String字符串,实际参数把值传递给形式参数,形式参数将用这个值来进行操作,所以值传递的形式参数和实际参数分属两个不同的存储单元,在完成对值传递的操作之后,实际参数的值并没有发生改变 引用传递:传递的类型是引用数据类型,传的是地址。方法调用的时候,实际参数是对象(或数组)的地址,此时,实际参数和形式参...

qzlzwn的博客 1707

JAVA 方法的参数是按值传递还是引用传递?

JAVA 方法的参数是按值传递还是引用传递?

xinnian468153的博客 4544

Java 中的方法参数传递与值传递

在 Java 编程中,理解方法参数传递的机制是非常重要的。本文将通过一个简单的代码示例,深入探讨 Java 中的值传递(Pass by Value)机制,并分析为什么在某些情况下,方法内部的修改不会影响外部的变量。

李长渊的博客 789

Java方法的参数是值传递还是引用传递?

文章目录前言方法参数为基本类型时方法参数为包装类型的引用类型方法参数为类的对象引用总结 前言 之前一个同事面试遇到了这么一个面试题“Java方法的参数是值传递还是引用传递?”,给我看之后我也是对结果不太确定。所以就百度了一波,感觉虽然问题很简单,但是问题直戳本质,觉得很有必要留下一点点痕迹啦。 在Java方法中参数列表有两种类型的参数,基本类型和引用类型。 基本类型:值存放在局部变量表中,无论如何修改只会修改当前栈帧的值,方法执行结束对方法外不会做任何改变;此时需要改变外层的变量,必须返回主动赋值。 引用数

qq_42726668的博客 2538

关于参数在方法中传递过程的理解

1、基本数据类型(值类型)的值传递 public class Client2 { public static void main(String[] args) { /***********测试方法中参数传递的机制*************/ Client2 client2 = new Client2(); int a = 10; int b = 20; Sy...

wangjianxin1234的博客 445

java方法参数传递方式--按值传递、引用传递(转)

java的方法参数传递方式有两种,按值传递和引用传递 1.按值传递 参数类型是int,long等基本数据类型(八大基本数据类型),参数传递的过程采用值拷贝的方式 代码片段1: public class Test { public static void main(String[] args) { int a = 5; fun(a); System.out.println(...

ailianda的博客 2115

Java 方法参数传递方式

Java中只有值传递!!!

Gettler的博客 1025
上一篇: 3.7学习心得
下一篇: Java静态导入
Coldzerace
博客等级 码龄9年 3粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值