关于Java方法参数是值传递还是参数传递,我们首先明确是值传递。先看一下下面的例子:
1、定义方法tripleValue(double x)
public void tripleValue(double x){//将参数值增加三倍
x=3*x;
}
下面调用这个方法:
double percent = 10;
tripleValue(percent);
调用结束后percent的值仍然是10,并没有发生改变。
因为方法调用的执行过程是:
1)、x被初始化为percent值的一个拷贝(也就是10)
2)、x被乘以3之后等于30。但是percent仍然是10。
3)、这个方法结束后,参数变量x不再使用
2、给方法tripleValue传递一个对象引用类型的参数
现在有一个雇员类Employee。这个类的raiseSalary(double salary)方法可以将某个雇员对象的薪资增加。
我们实现一个这样的方法tripleValue(Employee x)。
public void tripleValue(Employee x){
x.raiseSalary(200);
}
下面调用这个方法
harry = new Employee();
tripleValue(harry);
调用结束我们会发现harry的工资增长了!
好了,到这我们也许会想,这不就是引用传递吗,harry指向的对象的属性值发生变化了呀。其实不是这样的,我们再看一下方法调用的过程:
1)、x被初始化为harry值的拷贝,这里是一个对象的引用。
2)、raiseSalary方法应用于这个对象引用。x和harry同时引用的那个Employee对象的薪金提高了200。
3)、方法结束后,参数变量x不再使用。当然,对象变量harry继续引用那个薪资增加200的雇员对象。
可见参数是对象引用时,仍然是值传递。
3、再看一个说明java参数传递是值传递的例子:
编写一个交换两个雇员对象的方法:
public void swap(Employee x , Employee y){
Employee temp = x;
x = y;
y = temp;
}
如果java对对象采用的是引用调用,那么这个方法就应该能够实现交换数据的效果:
Employee a = new Employee();
Employee b = new Employee();
swap(a,b);
但是,方法并没有改变存储在变量a和b中的对象引用。swap方法的参数x和y被初始化为两个对象引用的拷贝,这个方法交换的是这两个拷贝。最终白费力气,在方法结束时参数变量x和y被丢弃了。原来的变量a和b仍然引用这个方法调用之前所引用的对象。
这个过程说明:java对对象采用的不是引用传递,实际上,对象引用进行的是值传递。
下面总结一下在java程序设计语言中,方法参数的使用情况:
1)、一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)。
2)、一个方法可以改变一个对象参数的状态。
3)、一个方法不能实现让对象参数引用一个新的对象。
C++有值调用和引用调用,引用参数标有&符号。可以实现tripleValue(double & x)方法或swap(Employee & x , Employee & y)方法实现修改他们的引用参数的目的
相关推荐
在Java编程语言中,关于参数传递的方式一直存在两种观点:一种认为Java仅支持按值传递,另一种则指出Java同时支持按值传递和按引用传递。实际上,这两种观点并非完全对立,而是根据不同的角度来描述Java中的参数传递...
Java 方法参数传递之引用类型 Java 方法参数传递是 Java 编程语言中的一种基本机制,在方法调用时将参数传递给方法体内的变量,但是在传递过程中,参数的类型会对传递结果产生影响。在本文中,我们将讨论 Java 方法...
Java参数传递机制是编程中的重要概念,尤其是在Java中,它对于理解如何在方法间操作数据至关重要。本PPT深入探讨了这一主题,旨在帮助学习者彻底理解Java中的参数传递方式。 首先,我们要回顾面向对象的基本概念。...
理解这两种方式的区别是非常重要的,以便正确地使用参数传递,避免程序中的错误。 值传递和引用传递的区别可以用一个简单的例子来解释:值传递是一样的设计图纸,你可以根据这个设计图纸盖一个新的房子,然后你可以...
Java 语言中参数值传递和引用传递比较 Java 语言中参数值传递和引用传递是两种不同的参数传递...因此,在 Java 编程中,理解参数值传递和引用传递的区别是非常重要的,以便正确地使用参数传递方式,避免参数传递错误。
在Java编程语言中,了解值传递和引用传递的概念至关重要,因为它们直接影响到函数参数的处理方式。下面将详细探讨这两个概念及其区别。...在设计函数时,应考虑参数的可变性和安全性需求,从而选择合适的参数传递方式。
Java中,无论是值类型还是引用类型,在作为方法参数传递时,都遵循着一种被称为“按值传递”的机制。这意味着,当我们将一个变量作为参数传递给方法时,实际上传递的是该变量的一个副本。 ##### 1. 值传递 - **原理...
`,并将其作为参数传递给一个函数,函数内部对这个参数的任何修改都不会影响到原始变量`a`的值,因为传递的是`a`当前值的一个副本。 ```java void modifyByValue(int num) { num = 10; // 这里修改的是副本 } int...
在Java中,参数传递机制是值传递的,即函数调用时,参数的值被复制到调用函数的栈内存中。但是,对于基本类型对象和复杂对象,值传递的表现却有所不同。 对于基本类型对象,栈内存中留有的是原值,所以参数传递时,...
Java参数传递机制是一个常见的面试问题,它涉及到Java语言的基础特性。Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 ...
了解Java中的变量类型对于理解Java方法参数传递的实现机制非常重要。 三、Java方法参数传递实现机制 在Java中,方法参数传递是通过值传递的方式实现的。当方法调用时,实际参数的值将被复制到形参中。方法内部的...
这篇博客文章“JAVA反射参数传递概略”将深入探讨如何使用反射来处理方法参数,尤其是涉及到参数传递的细节。 首先,让我们理解什么是参数传递。在Java中,有两种基本的参数传递方式:值传递和引用传递。值传递是将...
在Java编程语言中,方法调用和参数传递是核心概念,理解它们的工作原理对于编写高效、可靠的代码至关重要。本文将深入探讨Java中的方法调用、值传递与引用传递,并通过字节码分析来进一步理解这些概念。 首先,我们...
Java总是以值传递方式进行,这意味着当你将一个变量作为参数传递给方法时,传递的是该变量所存储值的一个副本。然而,对于对象类型的变量,这个值实际上是一个引用,即指向对象内存位置的指针。理解这一点对于深入...
Java参数传递机制是编程中非常重要的概念,它涉及到基本类型和引用类型的差异。在Java中,参数传递主要有两种方式:值传递(Value Passing)和引用传递(Reference Passing)。虽然Java官方文档并未明确提及引用传递...
Java是一种广泛使用的面向对象的编程语言,其内存管理和数据传递机制是理解其核心概念的关键部分。在Java中,参数传递有...通过这些Visio资源,学习者可以更直观地掌握Java参数传递的精髓,加深对面向对象编程的理解。
无论将Java的参数传递称为"值传递"还是"引用传递",重要的是要明白对象的引用不会改变,但对象的内容可以在方法中被修改。这种机制使得Java的代码更安全,避免了不必要的副作用,同时也提供了灵活的编程模型。
### 利用ASP实现JAVA动态参数的传递:深入解析与实践 #### 引言 ...通过深入理解ASP的功能及其与Java参数传递的机制,开发者能够构建出更加智能、响应迅速的Web服务,满足日益增长的互联网需求。