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

java对象参数传递个人总结

阅读更多

网上关于 java参数传递的说法云天雾地的,许多人不严谨的说法给许多新人 造成了误解。

经过多方试验 本人就个人理解 总结如下:希望对探求真理的同学有所帮助,如果有不严谨的说辞 ,请予以留言指正,互相讨论 共同进步。

public class Bean(

    private String name;

    public void setName(String name){this.name=name;}

   public String getName(){return this.name;}

)

 

public class Test{

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

          bean1.setName("abc");

          Bean bean2=bean1;

          bean2.setName("cba");

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

          }

}

运行结果:cba

解释:java中变量都用 引用 这个名字代替

1。在内存的 栈内存区存储引用,堆内存存储引用指向的实际内容。

2.  虚拟机在运行的时候每读到一个引用就调至栈顶 然后对其操作。引用也是一个东西,他的实质是一个地址。一个记录了引用指向的具体变量内容的 堆内存地址。

   例如 001单元的栈内存单元 存储了引用bean1,即001单元里存储着 @12345

          而在堆内存单元地址 @12345里面存储了 bean1引用的实际内容。(或者是从这个地址开始的,根据变量类型决定)

         这样bean1 就成为人们常说的 “指向内容的引用了”。因为存了内容的地址,所以可以叫指向。(不知道谁发明这个让大家费解的名词。)

 

3.理解了上面之后,bean2=bean1操作之后,会发生以下变化。

    在内存的栈内存区域 的一个新的内存单元002中存储了一个引用的值@12346 。即栈内存单元002里面也存了@12345这玩意儿。 为啥呢?大家可以考虑下=号是什么意思,就是把等号右边的值给左边。

   这样bean2也就指向了@12345的内容了。

4. bean2.setName("cba");这句话执行之后  就由bean2 这个玩意操作了@12345里面 的东西改成了cba

5.所以 无辜的 bean1 啥也没做 就被改了内容。因为bean1 也指向了 @12345

这就好比 业主 给了装修的一把自己家门的钥匙 ,然后 装修的进去把屋子给砸砸,业主也只能无辜的看着这一切的发生。

 

 

分享到:
评论

相关推荐

    Java参数传递PPT

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

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

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

    java 参数传递

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

    java传递参数的方法

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

    Java参数传递的经典示例

    Java参数传递机制是编程中非常重要的概念,它涉及到基本类型和引用类型的差异。在Java中,参数传递主要有两种方式:值传递(Value Passing)和引用传递(Reference Passing)。虽然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中,方法(或称为函数)可以通过参数来接收外部的数据,并且能够返回处理后的结果。参数的传递方式主要有两种:值传递(Pass-by-value)和引用传递(Pass-by-reference)。...

    JNI 参数传递 Android 自定义对象

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

    Java的引用和函数参数传递

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

    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方法参数传递机制原理解析 Java方法参数传递机制是指在Java中,方法调用时传递参数的机制。参数传递机制可以分为两种:值传递和引用传递。 值传递是指基本数据类型的参数传递,值传递的体现是数值的传递。在值...

Global site tag (gtag.js) - Google Analytics