A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© shiweiCao 中级黑马   /  2013-6-10 23:54  /  1321 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 shiweiCao 于 2013-6-10 23:55 编辑

当一个对象被当作参数传递到一个方法后,
此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

我觉得是值传递,Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。  但是又想不到好的方法来测试.

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

4 个回复

正序浏览
加油
回复 使用道具 举报
楼主你好  如果问题已经解决  请把帖子的类型改为已解决  然后会给你发几个粽子吃
回复 使用道具 举报
在Java中并不存在引用传递(即地址传递),对于变量(可以是基本数据类型,也可以是引用数据类型)而言,可以理解为就是一个地址。传递,存在着拷贝操作。举个方法测试:

public class Terst4 {

    public static void swap(int a, int b) {

        int temp = a;

        a = b;

        b = temp;

        System.out.println("In swap: a = " + a + ", b = " + b);

    }

   

    public static void swap(Person c, Person d) {

        Person temp = null;

        temp = c;

        c = d;
     d = temp;

        System.out.println("In swap: " + c + ", " + d);

    }

   

    public static void main(String[] args) {

        int a = 1;

        int b = 2;

        Person c = new Person("c");

        Person d = new Person("d");

        

        System.out.println("对于基本数据类型");

        System.out.println("Before swap: a = " + a + ", b = " + b);

        swap(a, b);

        System.out.println("After swap: a = " + a + ", b = " + b);


        System.out.println("对于引用数据类型");

        System.out.println("Before swap: " + c + ", " + d);

        swap(c, d);

        System.out.println("After swap: " + c + ", " + d);

    }

}


class Person {

    private String name;



    public Person(String name) {

        this.name = name;

    }

   

    @Override

    public String toString() {

        return "My name is " + this.name + ".";

    }

}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马