`
lengyue
  • 浏览: 145475 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

java传参是以传值的方式而不是传址

阅读更多

本周在编码的时候,同事遇见了一个问题,始终没弄明白,最后我帮其找到了问题的原因

java传参的时候是传值的方式而不是传址。

public void testMethod(TestObject testObj,int i){

     testObj.setTestValue("2");

     i++;

    System.out.println("testObj.testValue="+testObj.getTestValue()+"int i"+i);//testValue值为2,i为2;

    testObj = new TestObj();

    testObj.setTestValue("3");//大部分都认为此处会影响传递来的testObj对象的值,实际这是一个新的对象,

   

}

 

public static void main(String[] args){

 

     TestObject testObj = new TestObject();

     testObj.setTestValue("1");

     int i=0;

     System.out.println("testObj.testValue="+testObj.getTestValue()+"int i"+i);

 

     testMethod(testObj,i);

    System.out.println("testObj.testValue="+testObj.getTestValue()+"int i"+i);//testValue值为2,不是1,也不是3,而int i是1.

    

 

这个问题,在候捷的java实践中第一个实践有较清晰的论述,只不过新入门的时候读书没有理解其含义,所以就会造成开发上的偏差.

分享到:
评论
1 楼 joachimz 2008-08-03  
似乎你的理解不对,参数还是传址。只是在这里你的testObj已经不是指向原来对象了,而是你新创建的。
引用

    testObj = new TestObj();

    testObj.setTestValue("3");//大部分都认为此处会影响传递来的testObj对象的值,实际这是一个新的对象,

相关推荐

    Java SE程序 界面传值问题

    Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE...

    java及C++中传值传递、引用传递和指针方式的理解.docx

    ### Java及C++中传值传递、引用传递和指针方式的理解 在程序设计语言中,函数调用时参数的传递方式对理解程序的行为至关重要。本文将深入探讨Java与C++这两种广泛使用的编程语言中参数传递的方式,包括值传递、引用...

    引用类型传值方法

    这两种方式可以用于强制函数修改原始变量的值,而不是仅仅改变副本。 ```csharp void Swap(ref Person a, ref Person b) { Person temp = a; a = b; b = temp; } Person person1 = new Person() { Name = ...

    java 调用 powershell 并传参 返回

    java 调用 powershell 并传参 返回

    简单的网页传值

    网页传值是Web开发中的基本操作,用于在不同的页面间传递数据,使用户的状态得以保持。本主题将深入探讨两种常见的方法:Cookie和Session。理解并掌握这两种技术对于构建动态和交互性强的网站至关重要。 首先,我们...

    JSP中java代码与js之间的传值

    - Java端可以使用JSON库(如Jackson或Gson)将Java对象转换为JSON字符串,然后通过上述方式传递给JavaScript。 - JavaScript可以使用JSON.parse()解析接收到的JSON字符串,将其转换回JavaScript对象。 4. **Web...

    Struts2的三种传值方式比较(附demo)

    Struts2作为一款流行的Java Web框架,为开发者提供了多种传递数据的方式,使应用程序能更灵活地处理用户输入和展示结果。在本篇文章中,我们将详细探讨Struts2的三种主要的传值方式,并通过一个简单的Demo来加深理解...

    lotus domnio java代理传值

    "lotus domnio java代理传值"这个主题主要涉及如何在Java代码中创建和使用代理,并在代理之间传递参数。 首先,让我们了解一下Lotus Domino Java代理的基本概念。在Lotus Domino Designer中,Java代理是用Java语言...

    自定义注解实现伪动态传参的小demo

    在这个“自定义注解实现伪动态传参的小demo”中,我们将探讨如何创建一个自定义注解,以允许在注解中传递类似于动态参数的数据。 首先,自定义注解的定义通常以`@interface`关键字开始,我们可以定义一些元素(也...

    后台与页面之间的传值以及页面与页面之间的传值

    本文将详细讲解这两种通信方式,并以Spring MVC框架为例进行深入阐述。 一、后台(服务器)与页面(客户端)之间的传值 1. 请求参数传递:在HTTP请求中,可以将数据作为查询参数附在URL后面,或者通过POST请求的...

    Android Intent多种传值方式

    本文将深入探讨Android Intent的多种传值方式。 1. **基本类型传值** - 使用`putExtra()`方法:Intent提供了`putExtra(String name, boolean value)`、`putExtra(String name, char value)`等方法,可以用来传递...

    Java中引用类型传值的代码清单.pdf

    当我们讨论“引用类型传值”时,意味着在方法调用时,传递的是对象引用的一个副本,而不是对象本身。以下是对给定代码清单的详细解释: 1. `Circle.java` 文件定义了一个名为 `Circle` 的类,它包含一个 `double` ...

    checkbox复选框传值

    这些值通常以数组形式存在,所以你可以遍历数组进行后续操作,如存入数据库。 5. 存储到数据库 为了将复选框的值存储到数据库,首先需要确定数据库的结构。通常,你可以创建一个关联表,其中包含用户ID和兴趣ID的...

    传址调用 传址调用 传址调用 传址调用

    传址调用 传址调用 传址调用 传址调用传址调用 传址调用 传址调用 传址调用

    java中传值与传引用

    在Java编程语言中,函数调用时的参数传递方式有两种:传值(Passing by Value)和传引用(Passing by Reference)。虽然Java官方文档中并未明确指出有传引用这一概念,但在实际操作中,Java的行为类似于传引用,尤其...

    解决java enctype multipart form-data文件上传传值问题

    ### 解决Java enctype "multipart/form-data" 文件上传传值问题 在Java Web开发中,处理文件上传是一项常见的任务。特别是当涉及到使用`multipart/form-data`作为表单的编码类型时,这种需求更为突出。本文将深入...

    js直接调用exe传参

    ### js直接调用exe传参 #### 背景与目的 在Web开发过程中,有时候我们需要从HTML页面通过JavaScript(简称JS)来调用本地的应用程序,并传递参数给这些应用程序。这种需求通常出现在需要与本地资源进行交互或者执行...

    Android NDK底层和java代码相互传值调用(实用经典Demo)

    例如,Java的`int`对应C/C++的`int32_t`,`long`对应`int64_t`,`float`和`double`保持不变,而字符串通常通过`char*`或`std::string`在C++中表示,Java中则使用`String`类。 2. **JNI接口定义** 要实现Java与C++...

    浅谈Java中方法的参数传值.pdf

    Java方法参数传值是Java编程中的基础知识点,涉及变量、数据类型和方法调用的机制。在Java中,数据类型分为基本数据类型和引用数据类型。基本数据类型包括布尔型(boolean)、字节型(byte)、短整型(short)、整型...

Global site tag (gtag.js) - Google Analytics