java基础问题。。。

求高手解释。。。。详细清楚的加分啊

java 值传递和引用传递问题

1. 基本类型和基本类型变量被当作参数传递给方法时,是值传递。在方法实体中,无法给原变量重新赋值,也无法改变它的值。
2. 对象和引用型变量被当作参数传递给方法时,是引用传递。在方法实体中,无法给原变量重新赋值,但是可以改变它所指向对象的属性。追问

还有点疑问,基本类型变量8个里面不是没有String类型么,怎么String也是值传递?

追答

对于字符串对象来说,虽然在参数传递的时候也是引用传递,但是java虚拟机在函数内部对字符串对象进行了特殊处理--视String对象为常量(final) 所以对传进来的引用地址所引用的string对象比能直接进行修改,而是产生一个副本对其进行操作,对其进行的操作不会影响原来的值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-19
啥问题
第2个回答  2011-09-19
结果就是test ok and gbc啊
第3个回答  2011-09-19
good and gbc
主要是change方法。意思是将形式参数str的值赋为test ok,这里参数传过来的只是值。所以再方法里面怎么改动都改不到外面的变量。 而char[]数组作为形参传过来的是地址,所以参数内改动char数组地址所指的值会再函数外面生效。
第4个回答  2011-09-19
结果是:good and gbc
因为ex.str传的是“good”对象,赋值语句实际就是“good”="test ok",两个都是对象,显然不能成功
ex.c传的是数组c 的引用,它执行的实际是把c[0]指向了别的对象,所以成功,如果这里传的是ex.c[0]那么就和上面的str一样了,不可变
相似回答