美文网首页
java 对象传入到函数原对象不改变

java 对象传入到函数原对象不改变

作者: 不知名的蛋挞 | 来源:发表于2018-10-15 19:31 被阅读36次

demo.java

public class Entry
{
    public static void main(String[] args)
    {
        List<String> re = new ArrayList<>();

       // initial 一个对象,期望这个对象经过函数能引用到新的对象
        TestObject test=new TestObject("1","2");
        addObject(test);
        System.out.println(test.hashCode());

    }

   // 希望这个函数能将test引用到新的对象
    public static void addObject(TestObject object)
    {
          System.out.println(object.hashCode());
          object = new TestObject("2", "4");
          System.out.println(object.hashCode());
          object.setId("100");
    }
}

执行结果如下:

1259475182
1300109446
1259475182

可以看到进入到函数里面之后,test这个引用变成了局部变量,不会影响到全局变量test,一旦出了函数还是test,并没有引用到新的对象。

进入到函数之后test引用到新对象没问题,出去之后test还是老的对象,但是java不是传递对象引用关系么?实际都是值传递,对象看着像
引用传递,实际传的是对象的地址,像c++一样,对地址修改影响到原来值;如果对传入函数的对象引用参数赋值,那么也是把一个对象的引用赋值给了一个地址变量,在java中,变量传入到函数参数是变量的一份拷贝,并不会影响到原来的值的。

经常使用的是把对象传入到一个function,对这个对象内容修改,修改引用这个基本没有用过。

相关文章

  • java 对象传入到函数原对象不改变

    demo.java 执行结果如下: 可以看到进入到函数里面之后,test这个引用变成了局部变量,不会影响到全局变量...

  • Cloneable接口

    前置知识 Java在处理对象和变量时是不同的.变量传入函数实际上是引用传入函数内,在函数内的变量和函数外传入的变量...

  • Function(){}.bind()

    bind()方法主要就是将函数绑定到某个对象,bind()会创建一个函数,函数体内的this对象的值会被绑定到传入...

  • Java构造函数

    Java构造函数 构造函数 构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数的时候,会...

  • java 泛型方法的两种写法

    这种需要传入 类名.class(class对象)(java有两类对象,Class对象和实例对象。更多参考Java的...

  • Optional

    Java8中Optional为util包中一个类 创建Optional对象 Optional.of() 传入对象不...

  • Java 浅拷贝和深拷贝

    java中传递为值传递,对于引用类型,改变值后,原对象及引用对象值将都改变,最近刚好看java中浅拷贝和深拷贝问题...

  • Promise

    在学习ajax时老师提到了Promise创建Promise 实例对象并返回,应传入一个函数对象作为参数函数传入两个...

  • 何时需要重构:过长参数

    把参数放在一个对象中,把这个对象当作参数传入函数。 这样当需要增加或者减少原有传入参数就不需要修改这个函数的传入参...

  • C++11 线程基础——线程的创建

    线程创建方式 首先包含头文件#include 传入函数 使用类对象,可调用对象 传入lambda表达 开发测试环境...

网友评论

      本文标题:java 对象传入到函数原对象不改变

      本文链接:https://www.haomeiwen.com/subject/hsrqzftx.html