java 对象传入到函数原对象不改变 值传递 引用传递
2017-06-09 01:16
260 查看
背景: 做项目的时候,将一个空对象的引用传入到方法中,期待方法里面创建一个新的对象给这个引用,后面就可以拿着这个对象用了。 可结果就是,定义在外面的对象引用并没有拿到这个引用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"); } }
执行结果如下:
125947518213001094461259475182
可以看到进入到函数里面之后,test这个引用变成了局部变量,不会影响到全局变量test,一旦出了函数还是test,并没有引用到新的对象。
进入到函数之后test引用到新对象没问题,出去之后test还是老得对象,但是java不是传递对象引用关系么;实际都是值传递,对象看着像
引用传递,实际传的是对象的地址,像c++一样,对地址修改影响到原来值;如果对传入函数的对象引用参数赋值,那么也是把一个对象的引用
赋值给了一个地址变量,在java中,变量传入到函数参数是变量的一份拷贝,并不会影响到原来的值的。
经常使用的是把对象传入到一个function,对这个对象内容修改,修改引用这个基本没有用过,
相关文章推荐
- Java - 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- Java函数传递对象与C++传递引用
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- JAVA中将一个数组通过引用传递给一个函数,在函数内部改变了它,再回到主函数,这个数组却没变化?
- 【java】值传递和引用传递---对象作为方法的参数传入属于哪种传递
- [Java] Java参数传递,究竟值传递还是引用对象(转)
- Java函数参数的值传递和引用传递
- 在Java中方法参数的传递,对象是传递引用
- Java:理解Java中函数参数传递的【按值传递】和【按引用传递】
- CRITICAL SKILL9.3:PassingObjects to Functions传递对象参数给函数(值传递和引用传递的探讨)
- 在函数中改变传入的参数值:引用参数的使用
- 【JSF心得】JAVA的对象传递是引用传递
- 【JSF心得】JAVA的对象传递是引用传递
- Java中函数参数的传递是值传递还是引用传递
- 今天才搞清楚:原来在C#中对象作函数参数,是引用传递:)
- 18天Java学习---6.面向对象编程01-类对象的构建及对象的引用传递
- java传递是引用的拷贝,既不是引用本身,更不是对象
- Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)
- 【JSF心得】JAVA的对象传递是引用传递