`
Wanghuidong
  • 浏览: 44869 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
文章分类
社区版块
存档分类
最新评论
  • openFox: 确实,以前只知道编码是个名词,在项目中编码统一就可以了,原来是 ...
    java编码解惑
  • tianzizhi: 前段时间我也看了许多这方面的东西,基本理解了,拿楼主的总结再复 ...
    java编码解惑

java对象参数传递个人总结(2)

阅读更多

接上次的说 再来说说第二种情况,通过参数传递的。

public static main(String args[]){
      Bean b=new Bean();

      b.setName("abc");

      change(b);

      System.out.println(b.getName());

}

 

 

public static change(Bean b){

     b.setName("cba");
}

结果:同样是 cba 原理同上次说的一样。

 

再来看另外一种情况:

public static main(String args[]){
      Bean b=new Bean();

      b.setName("abc");

      change(b);

      System.out.println(b.getName());

}

 

 

public static change(Bean b){

      b=new Bean();

     b.setName("cba");
}

结果 ;abc

 

解释:在change()方法里面 刚开始 是bean 将自己的引用复制了一份传入 change()方法,比如bean 的引用还是@123456 但是执行new Bean()之后 new操作符才 堆内存区域开辟了一个新单元地址@56789 然后把 @56789放入

  形参 bean了。

一语中的: 参数传递的是引用的一个拷贝。在上次的参数传递的时候,传递的也是一个引用的拷贝,即拷贝了一个@12456放在栈内存的一个单元里。这次是拷贝完之后 并修改了栈内存单元里的值 使其指向一个新的堆内存地址。因为new 了。 没有new的话 就不会再堆内存中开辟新空间。所以上次的2个栈内存地址都指向一个堆内存。这次是2个栈内存地址指向2个堆内存。 这样的话 形参bean 再修改name的话,就是修改@56789里面的东西了。所以 实际的bean指向的@12345里面的东西没变。

 

愚见为此,敬请高手指点批评。

 

分享到:
评论

相关推荐

    Java参数传递PPT

    总结来说,Java参数传递的核心是值传递,但对于对象参数,传递的是对象引用的副本。理解这一点对于避免常见的编程错误至关重要,特别是涉及到对象的状态更改时。因此,当在方法中处理对象参数时,必须谨慎操作,因为...

    java 参数传递

    Java 中的参数传递机制,可以简单地总结为:基本类型作为参数传递时,是传递值的拷贝;对象作为参数传递时,是传递对象的引用。如果你在方法内改变了对象的值,那么原对象也跟着改变,但是如果你重新分配了对象的...

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

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

    Java参数传递的经典示例

    2. 引用类型参数传递看起来像是引用传递,因为方法内部可以通过引用改变对象的状态,但不能改变引用本身指向的对象。 理解这些概念有助于避免在编程过程中出现错误,并能够更好地控制和预测代码的行为。

    java传递参数的方法

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

    JAVA反射参数传递概略

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

    Jni中C和Java的参数传递.doc

    总结一下,JNI 参数传递的关键点包括: 1. **类型映射**:Java 和 C++ 的数据类型不同,需要使用 JNI 提供的类型映射,如 `jint`、`jstring` 等。 2. **字段访问**:使用 JNI 的 `GetFieldID` 和 `GetObjectField`...

    Jni中C++和Java的参数传递

    总结来说,JNI中的参数传递涉及以下步骤: 1. 在Java中定义与C++结构体匹配的类。 2. 使用`javah`生成C/C++头文件。 3. 在C++中实现本地方法,注意使用正确的JNI类型和函数来处理参数和返回值。 4. 转换C++数据类型...

    23.Java对象作为参数传递是传值还是传引用1

    在Java编程语言中,关于Java对象作为参数传递时的行为,存在一种常见的误解。许多人认为对象是按引用传递,而实际上,Java总是按值传递,包括对象。这里的“值”指的是对象的引用,而不是对象本身。这与C++或C#等...

    Java的引用和函数参数传递

    对于对象的参数传递,Java采用的是引用传递的方式。这意味着当你传递一个对象作为参数时,实际上是传递了对该对象的引用,而不是对象本身的副本。因此,在方法内部对这个对象所做的任何改变都会反映到原始对象上。 ...

    java参数的传递与返回值

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

    JNI 参数传递 Android 自定义对象

    总结,JNI参数传递涉及基本类型、自定义对象和系统对象。理解和熟练掌握这些技术对于深入Android开发和优化性能至关重要。在实际应用中,应特别注意内存管理和对象生命周期,以确保代码的稳定性和效率。通过实践和...

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

    Java 面向对象编程中,参数传递是非常重要的一个概念。参数传递有两种方式:值传递和引用传递。了解这两种方式的区别是非常重要的,因为它们对程序的执行结果产生了很大的影响。 值传递是指将实际的内存中的值传递...

    jni java传递对象到C

    总结来说,通过JNI将Java对象传递到C代码,需要理解JNI的API,正确处理Java对象的生命周期,并确保在C代码中安全地操作这些对象。这既是一个挑战,也是提升程序性能和功能的重要手段。在实际开发中,应充分考虑跨...

    java参数传递 java 参数.doc

    总结来说,Java中的参数传递分为值传递(基本类型)和引用传递(对象)。值传递不会改变原始变量,而引用传递会根据对象是否可变来决定是否影响原始对象。在处理String对象时,虽然看起来像是引用传递,但由于String...

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

    标题“Java是值传递,传对象引用也是通过值”揭示了Java中参数传递的核心概念。Java总是以值传递方式进行,这意味着当你将一个变量作为参数传递给方法时,传递的是该变量所存储值的一个副本。然而,对于对象类型的...

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

    Java的参数传递方式实际上是一种特殊的"值传递",通常被称为"按引用传递对象的引用",这与C++等语言中的引用传递有所不同。以下是对这个主题的详细解释。 在Java中,所有的参数传递都是基于值的,但这涉及到一个...

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

    在Java中,当一个对象作为参数传递给方法时,实际上是传递了该对象引用的副本,而不是对象本身。这意味着,即使在方法内部改变了对象的属性,原始对象仍然保持不变,因为方法内部操作的是副本引用所指向的对象。例如...

    Java:按值传递还是按引用传递详细解说

    综上所述,在Java中,对于基本数据类型的参数传递实际上是按值传递,而对于对象类型的参数传递则是按引用传递的一种特殊形式——传递的是对象引用的副本,但由于这些副本指向同一个对象,因此对对象的修改会影响到...

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

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

Global site tag (gtag.js) - Google Analytics