`
lengyue
  • 浏览: 144569 次
  • 性别: 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...

    url地址传参中文乱码处理

    这两种转码方式是很好用的,所以很建议大家使用。 3. 修改Tomcat配置文件:在Tomcat的安装目录下conf文件夹中的server.xml文件,将配置访问端口的地方加上URIEncoding=“utf8"即可。但是,这种方式不建议使用。 在...

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

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

    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来加深理解...

    java http 接口调用 的get和post传参方法

    java实现调用httpclient接口的类和方法,包括了get和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` ...

    java中get方法传值的乱码问题

    关于java中使用表单get方法传值出现乱码问题的解答。详细简单,便于学习使用。

    checkbox复选框传值

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

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

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

    Ajax传值到java的方法中

    但是,在实际开发中,我们可能需要将数据传递给Java方法中,而不是JSP页面。这时,我们需要使用Servlet技术来处理Ajax请求。下面是相关代码的实现: ```java public class TestQuery extends HttpServlet { ...

    Android-Service与Activity传值

    在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`...在实际开发中,确保遵循最佳实践,如使用异步方式避免阻塞UI线程,以及正确管理资源以防止内存泄漏。

    Java传值还是引用

    根据标题和描述,我们将深入探讨Java中传值与引用的区别,以及它们在实际编程中的应用。 首先,Java是一种“总是按值传递”的语言。这意味着无论是基本类型还是引用类型,当作为参数传递时,都会有一个副本被创建并...

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

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

    Java传参方式-值传递还是引用传递

    Java 语言中,参数传递的方式只有一种,那就是按值传递。这意味着无论参数是基本类型还是引用类型,函数或方法在接收到参数时,都只会得到这些值的一个副本,而不是原始值本身。对于基本类型的参数,这个副本就是...

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

    这意味着传递的是对象引用(内存地址)的一个副本,而不是对象本身。因此,如果在方法内部修改对象的属性,原始对象会受到影响,因为两个引用指向同一块内存。但如果重新分配引用,原始引用将不受影响。 字节码是...

    lotus domino BS开发 java通过url传值

    本篇将深入探讨如何在Java中通过URL传值以及解析这些值。 首先,URL(Uniform Resource Locator)是互联网上的资源定位符,它包含了协议、主机名、路径和查询字符串等部分。在BS开发中,用户在浏览器中输入的URL...

Global site tag (gtag.js) - Google Analytics