`
ulpyuoo
  • 浏览: 6743 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java 传值 还是 传对象

阅读更多
看了http://www.cndw.com/tech/program/2006042962403.asp上的这篇文章,有点小体会,不知道对不对,先记下来。
我们知道,java中的实例变量中存储的是一种特殊的数据结构(对象的引用,通过它能访问它所指向的对象,但它不是那个对象,而仅相当于那个对象的别名),看下面的两个例子:
/* 例 2 */
/**
* @(#) Test.java
* @author fancy
*/
public class Test {
    public static void main(String[] args) {
        StringBuffer a = new StringBuffer("Hello");
        StringBuffer b = a;
        b.append(", World");
        System.out.println("a is " + a);
    }
}
===============================================================
/* 例 3 */
/**
* @(#) Test.java
* @author fancy
*/
public class Test {
    public static void test(StringBuffer str) {
        str.append(", World!");
    }
    public static void main(String[] args) {
        StringBuffer string = new StringBuffer("Hello");
        test(string);
        System.out.println(string);
    }
}
它们的结果是一样的,main中的对象改变了。而下面的例子
/* 例 4 */
/**
* @(#) Test.java
* @author fancy
*/
public class Test {
    public static void test(String str) {
        str = "World";
    }
    public static void main(String[] args) {
        String string = "Hello";
        test(string);
        System.out.println(string);
    }
}
结果显然,main中的对象并没有改变,这是因为在传参的过程中,相当于执行了
     “形参”=“实参”;
这样一个表达式,即例3、例4中调用test方法时,相当于执行了一次str=string,也就是test方法中的str成了main中的对象的一个别名,但是在例4中,这个别名又指向了另外一个对象,所以没有对main中的对象造成影响,
1
0
分享到:
评论

相关推荐

    java中传值还是传引用的的认识

    "java中传值还是传引用的认识" Java 中的参数传递是值传递还是引用传递?这是一个经常引发讨论的问题。在 Java 中,参数传递是按值传递的,也就是说,传递给方法的参数是一个副本,而不是原始值本身。 当一个对象...

    Java传值还是引用

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

    Java是传值还是传址引用

    ### Java是传值还是传址引用 #### 一、简单类型是按值传递的 Java在处理简单数据类型(如int、boolean等)时采用的是按值传递的方式。这意味着当你将一个简单类型的值作为参数传递给一个方法时,实际上传递的是这...

    java中传值与传引用

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

    java的传值与传值后的改变

    理解Java中的传值与传引用对于编写正确且预期的行为代码至关重要。在编写函数时,应清楚地知道参数如何被传递,以及这将如何影响函数的可读性和行为。在实际编程中,合理运用这些知识能帮助避免许多常见的错误和困惑...

    android activityIntent 传值 传对象

    3. **自定义对象的传值** 自定义对象的传递通常有两种方式:实现Parcelable接口或者Serializable接口。 - **Parcelable**:Parcelable是Android系统提供的一种高效的序列化方式。首先,让自定义类实现Parcelable...

    lotus domnio java代理传值

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

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

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

    java传值中的乱码

    ### Java传值中的乱码问题及最简易的解决方法 在Java Web开发中,经常会遇到一个令人头疼的问题:客户端向服务器传递数据时出现乱码。这种情况不仅会影响用户体验,还可能导致程序逻辑错误。本文将深入探讨Java传值...

    JAVA中传值与引用问题

    在计算机编程领域,特别是对于面向对象语言如Java而言,“传值”与“传引用”的概念是理解数据传递机制的关键所在。Java作为一种广泛使用的高级编程语言,在设计之初就考虑到了如何避免C/C++等语言中的复杂性,特别...

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

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

    Axis传值和复杂对象

    【标题】"Axis传值和复杂对象"涉及的是在Web服务开发中,使用Apache Axis框架进行数据传递,特别是处理复杂对象的场景。Apache Axis是一个开源的Web服务工具包,它允许开发者创建、部署和调用Web服务。在这个场景中...

    java中页面传值的简单操作

    在Java Web开发中,页面传值是不可或缺的一部分,主要用于用户在网页上填写信息后提交到服务器进行处理。本文将详细讲解如何在Java中通过表单(Form)进行页面传值的简单操作。 首先,我们需要了解HTML中的表单元素...

    Java到底是传引用还是传值Java开发Java经验技巧共

    在Java中,基本数据类型(如int、float、char等)是按值传递的,而对象则是按引用传递的。但这并不意味着对象本身被复制,而是对象的引用被复制。 首先,我们来看基本类型的参数传递。当一个基本类型的变量作为参数...

    引用类型传值方法

    总的来说,引用类型在传值时传递的是对象的引用,而非对象本身。这使得多个变量可以共享同一个对象,但也可能导致意外的共享状态。理解和熟练掌握引用类型的传值机制,对于编写高效、安全的代码至关重要。在实际开发...

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

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

    flex+java 对象交互传值

    flex+java交互 后台传参 前台操作

    传值与传地址[文].pdf

    在编程语言中,传值与传地址是两种不同的参数传递方式。Java 作为一门面向对象的语言,对于简单类型和对象类型的处理方式有所不同。本文将详细解释这两种类型在Java中的传递机制。 1. 简单类型(按值传递) Java中...

    浅析Java方法传值和传引用问题

    总的来说,Java的方法参数传递机制对基本类型采用传值,对象类型采用“传引用”的方式。理解这两种机制的不同可以帮助开发者编写更加安全和可维护的代码。在设计方法时,应根据需要决定是否需要修改对象的状态,以及...

Global site tag (gtag.js) - Google Analytics