码迷,mamicode.com
首页 > 编程语言 > 详细

java中函数传值与引用问题

时间:2019-01-30 17:18:28      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:引用   ring   png   http   一点   sys   问题   函数   结果   

从C++转java,在使用函数传对象时,碰到一点问题,今天特意验证了一下:

public class App 
{
    public static void doubleTest(double d) {
        d=8.0;
        System.out.println( "[INNER doubleTest]double:"+d);
    }
    public static void DoubleTest(Double dd) {
        dd=8.0;
        System.out.println( "[INNER DoubleTest]Double:"+dd);
    }
    public static void ObjectTest(ObjectChange obj) {
        obj = new ObjectChange(5);
        System.out.println( "[INNER ObjectTest]Object:"+obj.getTT());
        obj.setTT(8);
        System.out.println( "[INNER ObjectTest]Object:"+obj.getTT());
    }
    public static void ObjectChangeTest(ObjectChange obj) {
        obj.setTT(8);
        System.out.println( "[INNER ObjectChangeTest]Object:"+obj.getTT());
        obj = new ObjectChange(5);
        System.out.println( "[INNER ObjectChangeTest]Object:"+obj.getTT());
        obj.setTT(6);
        System.out.println( "[INNER ObjectChangeTest]Object:"+obj.getTT());
    }
    
    public static void main( String[] args )
    {
        System.out.println( "Source:" );
        double d1=1;
        Double d2=2.0;
        ObjectChange obj1 = new ObjectChange(1);
        System.out.println( "double:"+d1+"    Double:"+d2 +"    Object:"+ obj1.getTT());        

        System.out.println( "After:" );
        doubleTest(d1);
        DoubleTest(d2);
        ObjectTest(obj1);
        System.out.println( "double:"+d1+"    Double:"+d2 +"    Object:"+ obj1.getTT());
        ObjectChangeTest(obj1);
        System.out.println( "Object:"+ obj1.getTT());
    }
}

程序输出结果:

技术分享图片

总结:

obj在函数体内作为临时变量,可读取对象内容,采用“=”(赋值运算符)改变的是临时对象的内容,赋值后,再操作的也是临时对象的内容;

只有在赋值前调用对象的成员方法(setTT())才能真正改变obj对象的内容;

java中函数传值与引用问题

标签:引用   ring   png   http   一点   sys   问题   函数   结果   

原文地址:https://www.cnblogs.com/HandyLi/p/10338578.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!