深入 -- 方法的参数传递

C#winform 实现图片轮播 作为一个C#winform刚刚入门的我  觉得这可能是初学者都会遇到的  我自己也觉得很神奇 首先 窗体里有一个Button按钮,和一个pictureBox 图片框 定义一个线程方法         ///         /// 改变图片         ///         /// 图片         /// 切换图片间隔时间         阅读详情

方法参数传递有两种方式

按值调用:表示方法接收的是调用者提供的值。

按引用调用:表示方法接收的是调用者提供的变量地址。

Java程序设计语言总是采用按值调用。

也就是说,方法得到的是所有参数值的一个拷贝。

举个例子:

public static void main(String[] args) {
	TestMethod testMethod = new TestMethod();
	int a = 10;
	testMethod.change(a);
	//change方法调用之后,a还是10
	System.out.println("a : " + a);
}

private void change(int number) {
	System.out.println("1 change : " + number);
	number += 100;
	System.out.println("2 change :" + number);
}

输出结果:


可以看到,无论怎样,调用这个方法之后,a依旧是10

分析下代码:

        a. a被初始化为10.

        b. 调用change(int number)方法,number被初始化为a值得一个拷贝(也就是10).

        c. number被操作之后等于110.但a依旧是10.

        d. 方法结束之后,参数变量number不再使用。

从以上分析看出:对方法 参数的修改并没有保留下来。

不过,方法参数共有两种类型:

    1. 基本数据类型(八种基本类型)

    2. 对象引用


通过上面的分析看到,一个方法不可能修改一个基本数据类型的参数。


但是对象引用作为参数就不同了,可以很轻易的修改它。

举个例子:

public static void main(String[] args) {

	TestMethod02 testMethod02 = new TestMethod02();

	Person person = new Person();
	person.setName("CYX");
	person.setAge(20);

	System.out.println("person1 : "+person.toString());

	//调用方法、修改对象中的值
	testMethod02.change(person);

	//调用方法之后发现,person中的参数改变了
	System.out.println("person2 : "+person.toString());

}

//修改person中的变量
private void change(Person p) {
	int age = p.getAge() * 10;
	p.setAge(age);
}

输出结果:

分析下代码:

a. 初始化person类对象,然后调用chage方法

b. p被初始化为person值的拷贝,这是一个对象的引用。

c. p.getAge() * 10; 操作,应用于这个对象的引用。p和person同时引用Person对象。

d. 方法结束之后,参数变量p不再使用。但 对象变量person依旧引用那个年龄改变了10倍的对象

通过上分析看出,方法得到的是对象引用的拷贝,对象引用  及  其他的拷贝  同时引用同一个对象。

很多程序语言(C++、Pascal)提供了两种参数传递的方式,值传递 和 引用传递。

那Java也是采用两种方式嘛?别着急,往下看….


再看一个例子,通过这个反例来看下:

public static void main(String[] args) {

	TestMethod03 testMethod03 = new TestMethod03();

	Employee a = new Employee("CYX", 10);
	Employee b = new Employee("ZZZ", 11);

	System.out.println("a1 : " + a);
	System.out.println("b1 : " + b);
	System.out.println();

	testMethod03.swap(a, b);

	System.out.println("a2 : " + a);
	System.out.println("b2 : " + b);
	System.out.println();
}

//交换两个对象
public void swap(Employee x, Employee y) {
	System.out.println("x1 : " + x);
	System.out.println("x1 : " + y);
	System.out.println();
	Employee temp = x;
	x = y;
	y = temp;
	System.out.println("x2 : " + x);
	System.out.println("x2 : " + y);
	System.out.println();
}

输出结果:

如果Java语言对 对象采用的是引用传递,那么这个方法能够实现交换数据的效果。

不过,从打印的数据来看,最后输出的a、b内容并没有改变。

我们来分析下代码:

a. 首先创建a、b两个对象。

b. 进入方法,将a赋值给x、b赋值给y,此时(a=x,b=y)

c. 对象开始交换:

a. x 赋值给 temp   (a=x=temp)

b. y 赋值给 x   (x = y = b)

c. temp 赋值给 y   (y = temp = a)

d. 这时候:x 和 y 原本的指向都改变了(x-b、y-a)。

i. 方法结束之后,x、y不再使用。

j. 回到上层,a、b的指向改变了嘛? 没有改变。

这个过程说明,Java语言对对象采用得到不是引用传递。实际上,对象引用进行的是值传递。


小结一下:

一个方法不能修改一个基本数据类型的参数。

一个方法可以改变一个对象参数的状态(对象内字段数据)。

一个方法不能让对象参数引用一个新的对象。


CIFAR-100模型性能对比:Top1与Top5错误率深度解析 本文深度解析了CIFAR-100数据集上Top1与Top5错误率的核心意义与差异。通过对比MobileNet、ResNet、DenseNet等主流模型的性能数据,揭示了模型架构、训练策略及数据集特性如何共同影响这两个关键指标,并为不同应用场景下的模型选择提供了实战指南。 阅读详情

相关推荐

【首份】2023年30米分辨率土地利用遥感监测数据

为了恢复和重建我国土地利用变化的现代过程,更好地预测、预报土地利用变化趋势,地球资源数据云以美国陆地卫星Landsat 遥感影像数据作为主信息源,结合Sentinel系列数据,通过人工目视解译和机器学习方法,建立了国家尺度1:10 万比例尺多时期土地利用/土地覆盖遥感监测数据库(CNLUCC)因早期Landsat数据时空覆盖缺失,1972-1977年合成第一期数据,1978-1985年合成第二期数据,1986年起每年度生成一期数据。投影:Albers正轴等面积双标准纬线圆锥投影南标准纬线:25°N。

地球资源数据云的官方博客 3677

方法—方法的参数传递

7.方法的参数传递 (学完方法的参数传递之后要求能够理解方法的参数传递过程中基本类型和引用的区别) 7.1方法参数传递(基本类型) 看这里,有一个类在这个类中有两个方法main方法和change方法main方法一进来定义了一个int类型的变量它的值是100,接着输出这个变量的值此处syso是System.out.println的缩写方式,也就是说看到syso就是代表System.out,println。调用change(number)方法就会走到public static void change(

weixin_67796933的博客 801

AstrBot插件开发全攻略:从零编写一个天气查询插件(Python实战)

本文提供了一份详细的AstrBot插件开发实战指南,手把手教你使用Python从零编写一个智能天气查询插件。内容涵盖插件系统核心设计、开发环境搭建、API调用与数据处理、自然语言交互实现以及插件打包发布全流程,帮助你快速掌握基于AstrBot框架的聊天机器人功能扩展技能。

weixin_29212867的博客 1083

方法的参数传递

主要内容参考菜鸟教程,这个讲的挺简单的 当调用带有参数的方法时,您需要向方法传递参数。在 C# 中,有三种向方法传递参数的方式: 方式 描述 值参数 这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。 引用参数 这种方式复制参数的内存位置的引用给形式参数。这意...

冉筱 407

STM32H745xI双核芯片SMPS/LDO配置误区:从复位失败到精准排查的实战复盘

本文详细分析了STM32H745xI双核芯片在SMPS/LDO配置中的常见误区,特别是复位失败问题的排查过程。通过对比参考板与故障板的波形数据,揭示了电感选型不当导致的电源稳定性问题,并提供了硬件设计检查清单和调试技巧,帮助开发者避免类似陷阱。

weixin_42531588的博客 265

【ISP图像处理】Demosaic去马赛克技术演进与边缘优化策略

本文深入解析了ISP图像处理中的Demosaic(去马赛克)技术。从Bayer阵列原理出发,梳理了从双线性插值、Hamilton-Adams边缘导向算法到利用通道相关性与自相似性的技术演进历程,并重点探讨了针对边缘与纹理伪影的优化策略,为工程实践中的算法选型与硬件协同设计提供了专业指导。

weixin_29091445的博客 387

Java中的方法参数传递机制

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

hitmengfanchao的博客 2589

格拉姆角场(GAF)实战:用Python实现时间序列图像化处理

本文深入解析了格拉姆角场(GAF)技术,这是一种将一维时间序列转化为二维图像特征的方法,以便利用卷积神经网络(CNN)等图像模型进行深度分析。文章通过Python实战代码,详细演示了GASF和GADF两种核心转换的实现过程,并探讨了其在时序数据分类任务中的应用,为故障预警、金融模式识别等场景提供了强大的图像驱动分析视角。

weixin_29079671的博客 273

方法及方法参数传递

方法的概念 概念:方法,也叫函数,但是一般在java中都叫方法,可以看成是一个可以完成独立功能的代码块, 可以反复使用,每次使用都是独立的!存在于类的结构体。 作用:完成功能,数据的处理!可以反复使用,每一次使用都是独立的 认识方法 修饰符: public static 修...

chitao5378的博客 255

addBumpConnectTargetConstraint 命令详解

本文介绍了Cadence Innovus中用于倒装芯片设计的addBumpConnectTargetConstraint命令的核心功能和使用方法。该命令主要用于为凸点(Bump)添加连接目标约束,通过绑定实例、引脚/网络和端口号等属性,实现凸点与电源/信号网络的精准映射。文章详细解析了命令语法结构、参数说明及使用场景,包括必选参数(指定凸点方式)、分支选择(实例连接或电源连接类型)以及互斥参数(引脚名与网络名)等重要注意事项,并提供了典型应用示例。该命令特别适用于倒装芯片设计中凸点与PG网络、IO实例的连接

u013620135的博客 394

智能生活中枢:基于 ESP32-S3 的桌面智能助手与日程提醒终端设计与实现

本文完成了基于 ESP32-S3 的桌面智能助手与日程提醒终端的完整设计,实现了时间同步、日程管理、声光提醒、环境监测、本地存储等核心功能。硬件接线简洁、软件逻辑清晰,可直接制作成品使用。硬件方案:以 ESP32-S3 为核心,搭配 OLED、DS3231、DHT11、按键、声光模块,接线标准化、易复刻;软件方案:基于 Arduino 开发,提供标准 Mermaid 软件流程图,代码模块化、可直接编译运行;核心功能:网络授时、本地日程管理、掉电存储、声光提醒、温湿度监测,满足桌面智能助手全场景需求。

weixin_42300449的博客 209

9. Java 方法与参数传递

Java 中的方法是执行特定任务的代码块,用于提高代码的复用性和模块化。方法的声明包括访问修饰符、返回类型、方法名、参数列表和方法体。方法可以分为静态方法和非静态方法,静态方法属于类本身,可直接通过类名调用,而非静态方法属于类的实例,需通过对象调用。访问修饰符(如 public、protected、private)控制方法的可见性。方法的使用场景包括代码复用、模块化和参数化行为。常见误区包括忽略返回值、混淆参数传递和未初始化局部变量。合理使用方法和访问修饰符有助于提高代码的安全性和可维护性。

weixin_43484713的博客 1208

矢量网络分析仪校准:原理、方法与系统适配性

矢量网络分析仪(VNA)校准是射频测量的关键环节,通过误差建模(12项误差项)和标准件测量,可将系统不确定度从±5dB降至±0.1dB以下。主流校准方法包括SOLT(适用于同轴系统)和TRL(适用于波导系统),二者在标准件、误差重点及频率上限等方面存在显著差异。随着6G与量子通信的发展,动态实时校准将成为新趋势。工程师需根据传输结构、频率范围及精度需求选择合适方法,确保测量精度。

u014344410的博客 262

Java方法的调用以及参数传递

周记(9/28-9/) 一.方法的调用及参数的传递 1.方法的调用 1.1 定义方法的语法 [访问修饰符] 返回值类型 方法名([参数类型 参数1,参数类型 参数2,…]){ ​ 方法体 } 详解: 访问修饰符:用于修饰这个方法的调用范围,目前默认public static 返回值类型:无返回值就写void或者方法执行后返回的结果的数据类型,方法执行之后会将结果返回 方法名:给方法取的名字,遵循标识符规则 参数类型,参数名:同时定义,方法在执行时未知的数据,需要在调用

weixin_47598133的博客 6014

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

方法及方法参数传递:

一、方法 概念:方法也叫函数(JAVA中一般称为方法),在类或者对象中,是一个可以完成独立功能的代码块,每次调用都是独立的。 作用: 完成功能,数据的处理; 方法可以拿来反复使用,也就是提高了重用性; 独立完成,可以增加维护的便捷,也可以提高编码的效率。 在我们接触java语言的时候,学会的第一个java语言,Hello world class Hello{ public static vo...

weixin_44855510的博客 1669

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

方法的参数传递机制

Java里的方法是不能独立存在的,调用方法必须由类或者对象作为主调者,如果声明方法时包含了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传递给形参的参数值也被称为实参。 Java的参数传递只有一种方式:值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不受任何影响。 下面程序演示了方法参数传递的效果。 public class C { private

进阶的Java蜗牛 1399

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

如何在Java中将方法作为参数传递

在Java中,我们可以使用函数式编程的概念,特别是lambda表达式、方法引用和函数式接口,将方法作为参数传递给另一个方法。这种技术可以让我们编写更加简洁和灵活的代码。

訾博(ZiBo)的博客 1504

【java】方法的参数传递

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

qq_45746744的博客 4988

方法参数传递

1. 什么是方法参数传递 概念:在使用方法的时候,传入值或者变量,传递的到底是什么? 值传递:方法传递的是值 形式参数类型是基本数据类型 基本类型数据传递的是值 值引用:方法传递的是值得引用 ...

210

java基础—方法的参数传递机制

java基础—方法的参数传递机制 1、基本类型参数传递   Java里方法的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响。   Java里的参数传递类似于《西游记》里的孙悟空,孙悟空复制了一个假孙悟空,这个假孙悟空具有和孙悟空相同的能力,可除妖 或被砍头。但不管这个假孙悟空遇到什么事,真孙悟空不会受到任何影响。与此类似,传入方法的是实际参数值的复制品,不管方法 中对这个复制品如何操作,实际参数值本身不会受到任何影响。下面程序演示了方法参数传

qq_43265448的博客 644

Java方法的参数传递

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

止语的博客 2781
上一篇: SpringBoot - 02 - 自定义LogBack、加载properties中自定义变量
下一篇: 异常 -- Spring Boot_Access denied for user ‘‘@‘192.168.137.1‘ (using password: NO)
Simba_cheng
博客等级 码龄11年 250粉丝 203原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值