Java参数传递机制分析:值与引用

发表于:2009-8-21 10:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

#
java

  Java参数传递机制

  Java究竟是应该按照什么来传递参数?值?引用?还是两者皆有?

  其实,弄清楚这个问题得从概念入手。什么是按值传递,什么是按照参数传递。

  定义一个变量TestObject obj = new TestObject(); 然后把 obj作为参数传递给一个方法。如果在这个方法中,只能改变obj指向的这个对象的内容,那就是“值传递”,传过去的值就是指向这个对象的指针。如果在这个方法中通过操作,使得返回后的obj指向另外一个对象(通过equal判断返回来的对象是否与原对象在内存中指向同一内存地址),那就是“引用传递”,传过去的是对这个指针变量的“引用”。

    Java参数传递机制分析代码

public class PersonT {

    public void change(Person p) {

        p.name = "mary";

        p.age = 20;

    }

    public void changeInt(int i) {

        i = 8;

    }

    public void change1(Person p){

//新建对象,name为tpm,age为22

       p = new Person("tom",22);

    }

    public static void main(String[] args) {

        PersonT t = new PersonT();

        Person p = new Person("john", 18);

        Person p1 = p;

        System.out.println(p);

//通过方法改变对象属性值

        t.change(p1);

        System.out.println(p1);

        System.out.println("传回来的值指向是否一致:" + p.equals(p1));

//通过方法改变整数值

        int i = 10;

        System.out.println("i值为:" + i);

        t.changeInt(i);

        System.out.println("i值为:" + i);

//新建一对象,改变对象值

        t.change1(p);

        System.out.println(p);

    }

}


 
    输出结果为:

    姓名:john年龄:18

    姓名:mary年龄:20

    传回来的值指向是否一致:true

    i值为:10

    i值为:10

    姓名:mary

    年龄:20

    以上就是对Java参数传递机制的一些分析。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号