`
ak478288
  • 浏览: 73431 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java参数传递方式

阅读更多

其实这个问题我原来翻译(破除java神话之二:参数是传址的 )、转帖别人的详细解释(Java 应用程序中的按值传递语义 )和专门解释( 我对《Java 应用程序中的按值传递语义》的理解 )过,不过现在看来,原来翻译或者解释的角度是有问题的,从底层的角度解释并不直观,在交流的时候也容易引起误解,最终不能达成一致意见。下面以最终的效果来解释参数的传递方式:

1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没用改变。
2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。

public class Tester {
    public static void main(String[] args) {
        int primitive = 2;
        changePrimitive(primitive);
        //primitive的值依然是2
        MyClass myClass = new MyClass();
        changeObject(myClass);
        //myClass仍然指向的是执行changeObject之前的那个对象
        //但是myClass.i等于3了
    }

    public static void changePrimitive(int primitive) {
        primitive = 3;
    }

    public static void changeObject(MyClass myClass) {
        myClass.i = 3;
        myClass = new MyClass();
    }
}

class MyClass {
    int i;
}

 

 

 

对于远程调用,无论是什么类型,调用结束后,传入的参数和以前没用任何变化(当然前途是直接调用远程方法,如果中间经过其它的Proxy类或者Facade类,不能保证那些类对对象没用修改)。至于是通过Local接口进行调用的,也应该属于本地调用,和上面说的情况应该是一致的。

 

分享到:
评论
1 楼 ileson 2011-06-05  
 public static void changeObject(MyClass myClass) {   
    myClass = new MyClass();         
    myClass.i = 3;   
          
 }  

相关推荐

    JAVA参数传递方式实例浅析【按值传递与引用传递区别】

    JAVA 参数传递方式实例浅析【按值传递与引用传递区别】 JAVA 参数传递方式实例浅析【按值传递与引用传递区别】是 JAVA 编程语言中的一种基本概念,对于 JAVA 开发者来说是非常重要的。本文将通过实例形式分析 JAVA ...

    11.java参数传递.zip

    11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java...

    13.java参数传递之引用传递.zip

    13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....

    58.java参数传递机制.zip

    58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递...

    java中参数传递方式详解

    Java中参数传递方式详解 Java 中参数传递方式详解是 Java 新手入门面临的一个经典的话题。本文意在终结这个话题,Java 中有说法:Java 里面参数传递都是按值传递,怎么理解这句话? 按值传递和按引用传递是来自 ...

    Java参数传递PPT

    本PPT深入探讨了这一主题,旨在帮助学习者彻底理解Java中的参数传递方式。 首先,我们要回顾面向对象的基本概念。在Java中,类(Class)是对象的蓝图,它定义了对象可能具有的属性(如name、age、gender)和方法...

    java参数传递

    这里详细的说明了,java参数传递的过程,引用传递,值传递

    Java参数传递的经典示例

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

    关于java的传递方式问题

    ### 关于Java中的传递方式详解 #### 一、引言 在Java编程中,了解数据是如何在函数间传递的是至关重要的。这对于理解程序的行为、调试以及优化代码都非常关键。Java支持两种基本的数据传递方式:值传递和引用传递...

    java 参数传递

    Java 参数传递机制详解 Java 中的参数传递机制是一个经久不息的讨论话题,究竟是“传值”还是“传引用”,双方各执一词,互不相让。本文将通过详细的分析和实例,揭开 Java 参数传递机制的奥秘。 基本类型作为参数...

    java方法的参数传递其二.docx

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

    java参数传递 java 参数.doc

    Java 参数传递机制是编程中的重要概念,尤其是在Java中,它涉及到“值传递”和“引用传递”的理解。这里我们将深入探讨这两个概念,并结合给定的示例代码进行解析。 首先,我们看“值传递”。在Java中,基本类型...

    java参数的传递与返回值

    #### 一、Java参数传递的基本概念 在Java中,方法(或称为函数)可以通过参数来接收外部的数据,并且能够返回处理后的结果。参数的传递方式主要有两种:值传递(Pass-by-value)和引用传递(Pass-by-reference)。...

    java参数传递学习demo

    java的参数传递对比,体现了值传递和引用传递的区别,是我在java入门是写的学习demo

    62.java引用类型的参数传递.zip

    62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递....

    59.java基本类型的参数传递.zip

    59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递.zip59.java基本类型的参数传递....

    JAVA反射参数传递概略

    在Java中,有两种基本的参数传递方式:值传递和引用传递。值传递是将变量的副本传递给方法,而引用传递则是传递变量指向的对象引用。对于基本类型,Java总是使用值传递;而对于对象,实际上是引用的复制,但仍然保持...

    Java数组传递及可变参数操作实例详解

    当把数组作为参数传递给方法时,传递的实际上就是数组对象的引用。 Java 可变参数是指在方法中可以传递同类型的可变参数,JDK 1.5 开始支持这种特性。可变参数可以使得方法更加灵活、方便使用。可变参数的使用规则...

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

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

    java传递参数的方法

    java传递参数的方法 很的东西 大家下载学习一下

Global site tag (gtag.js) - Google Analytics