黑马程序员技术交流社区

标题: 一个面试题:关于对象当作参数传递的问题。 [打印本页]

作者: 与梦逆风而行    时间: 2014-11-25 12:45
标题: 一个面试题:关于对象当作参数传递的问题。
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性吗?




作者: 桃华月禅    时间: 2014-11-25 14:04
当然可以,一个方法到另一个方法只是栈内存引用变量的变化,无论哪个变量引用的都是堆内存中的对象。所以改变任何一个变量都会改变关联的推内存中的对象
作者: 与梦逆风而行    时间: 2014-11-25 19:22
桃华月禅 发表于 2014-11-25 14:04
当然可以,一个方法到另一个方法只是栈内存引用变量的变化,无论哪个变量引用的都是堆内存中的对象。所以改 ...

会改变对象本身的值么?
作者: huangkj    时间: 2014-11-25 19:35
可以,引用类型会因为形参的改变而影响实参
作者: wtjohn    时间: 2014-11-25 19:49
可以的
相当于把对象A的地址赋给B了,B也指向这个对象,当然可以操作了。
作者: 王小忠    时间: 2014-11-25 20:41
可以的,在Arrays类中有许多的静态方法,其参数就是要求传入一个数组,数组就是引用数据类型,调用这些方法后,原来数组的内容就会被改变~~你可以去查API看看,
作者: kerner    时间: 2014-11-25 20:54
方法调用是传值,引用变量本身的值是不会被改变的,因为传进去的是对一个对象的引用,所以对这个对象的属性会发生改变。
作者: 桃华月禅    时间: 2014-11-26 00:23
与梦逆风而行 发表于 2014-11-25 19:22
会改变对象本身的值么?

对象本身的值?只是对象地址值吗?那个不会改变的,地址值是无法改变的,是Java自动分配的...
新建一个对象赋值给相同的引用变量,虽然变量相同,可是指向的对象就不同了
作者: 王景阳    时间: 2014-11-26 03:01
可以   原本在C语言  和 c++说的是引用 把地址指针写进去更好理解,但在java中几乎是封装了地址指针这个东西  但是引用的思想还是没有变的   所以说可以
作者: as604049322    时间: 2014-11-26 07:28
哦。。学习;了
作者: 迷失的小Z    时间: 2014-11-26 17:17
我再补充一下,String例外……
作者: java小兵    时间: 2014-11-26 17:35
学习了!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2