`
于宏涛
  • 浏览: 1369 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于java方法参数值传递的理解

阅读更多

      关于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方法的参数传递其二.docx

    Java 方法参数传递之引用类型 Java 方法参数传递是 Java 编程语言中的一种基本机制,在方法调用时将参数传递给方法体内的变量,但是在传递过程中,参数的类型会对传递结果产生影响。在本文中,我们将讨论 Java 方法...

    Java参数传递PPT

    Java参数传递机制是编程中的重要概念,尤其是在Java中,它对于理解如何在方法间操作数据至关重要。本PPT深入探讨了这一主题,旨在帮助学习者彻底理解Java中的参数传递方式。 首先,我们要回顾面向对象的基本概念。...

    Java面向对象值传递和引用传递

    理解这两种方式的区别是非常重要的,以便正确地使用参数传递,避免程序中的错误。 值传递和引用传递的区别可以用一个简单的例子来解释:值传递是一样的设计图纸,你可以根据这个设计图纸盖一个新的房子,然后你可以...

    Java语言中参数值传递和引用传递比较.pdf

    Java 语言中参数值传递和引用传递比较 Java 语言中参数值传递和引用传递是两种不同的参数传递...因此,在 Java 编程中,理解参数值传递和引用传递的区别是非常重要的,以便正确地使用参数传递方式,避免参数传递错误。

    java 值传递和引用传递的比较

    在Java编程语言中,了解值传递和引用传递的概念至关重要,因为它们直接影响到函数参数的处理方式。下面将详细探讨这两个概念及其区别。...在设计函数时,应考虑参数的可变性和安全性需求,从而选择合适的参数传递方式。

    浅析Java引用类型和方法参数传递

    Java中,无论是值类型还是引用类型,在作为方法参数传递时,都遵循着一种被称为“按值传递”的机制。这意味着,当我们将一个变量作为参数传递给方法时,实际上传递的是该变量的一个副本。 ##### 1. 值传递 - **原理...

    java值传递与引用传递

    `,并将其作为参数传递给一个函数,函数内部对这个参数的任何修改都不会影响到原始变量`a`的值,因为传递的是`a`当前值的一个副本。 ```java void modifyByValue(int num) { num = 10; // 这里修改的是副本 } int...

    Java值传递的一些理解 1

    在Java中,参数传递机制是值传递的,即函数调用时,参数的值被复制到调用函数的栈内存中。但是,对于基本类型对象和复杂对象,值传递的表现却有所不同。 对于基本类型对象,栈内存中留有的是原值,所以参数传递时,...

    java参数传递时到底是值传递还是引用传递分享.pdf

    Java参数传递机制是一个常见的面试问题,它涉及到Java语言的基础特性。Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 ...

    Java方法参数传递如何实现

    了解Java中的变量类型对于理解Java方法参数传递的实现机制非常重要。 三、Java方法参数传递实现机制 在Java中,方法参数传递是通过值传递的方式实现的。当方法调用时,实际参数的值将被复制到形参中。方法内部的...

    JAVA反射参数传递概略

    这篇博客文章“JAVA反射参数传递概略”将深入探讨如何使用反射来处理方法参数,尤其是涉及到参数传递的细节。 首先,让我们理解什么是参数传递。在Java中,有两种基本的参数传递方式:值传递和引用传递。值传递是将...

    java 之方法调用 方法传参 值传递还是引用传递字节码

    在Java编程语言中,方法调用和参数传递是核心概念,理解它们的工作原理对于编写高效、可靠的代码至关重要。本文将深入探讨Java中的方法调用、值传递与引用传递,并通过字节码分析来进一步理解这些概念。 首先,我们...

    Java是值传递,传对象引用也是通过值

    Java总是以值传递方式进行,这意味着当你将一个变量作为参数传递给方法时,传递的是该变量所存储值的一个副本。然而,对于对象类型的变量,这个值实际上是一个引用,即指向对象内存位置的指针。理解这一点对于深入...

    Java参数传递的经典示例

    Java参数传递机制是编程中非常重要的概念,它涉及到基本类型和引用类型的差异。在Java中,参数传递主要有两种方式:值传递(Value Passing)和引用传递(Reference Passing)。虽然Java官方文档并未明确提及引用传递...

    Java 值传递Visio资源

    Java是一种广泛使用的面向对象的编程语言,其内存管理和数据传递机制是理解其核心概念的关键部分。在Java中,参数传递有...通过这些Visio资源,学习者可以更直观地掌握Java参数传递的精髓,加深对面向对象编程的理解。

    java参数传递时到底是值传递还是引用传递[归类].pdf

    无论将Java的参数传递称为"值传递"还是"引用传递",重要的是要明白对象的引用不会改变,但对象的内容可以在方法中被修改。这种机制使得Java的代码更安全,避免了不必要的副作用,同时也提供了灵活的编程模型。

    利用ASP实现JAVA动态参数的传递

    ### 利用ASP实现JAVA动态参数的传递:深入解析与实践 #### 引言 ...通过深入理解ASP的功能及其与Java参数传递的机制,开发者能够构建出更加智能、响应迅速的Web服务,满足日益增长的互联网需求。

Global site tag (gtag.js) - Google Analytics