这个Java程序的结果为什么是goodandgbc
发布网友
发布时间:2022-04-23 09:21
我来回答
共4个回答
热心网友
时间:2023-08-18 11:26
牢牢记住这句话:Java的参数传递的唯一方式:传值(By Value)
java的参数传递方式是值传递,当参数是简单类型时,不改变参数的值;当参数是引用类型时,不改变这个对象的引用.
这个程序可以如此分析,String str做为参数传递进函数时,把它的一个引用拷贝进函数,但是它指向的地址是不变的,而且change里的str是参数str而不是类变量str,对函数里的str赋值不影响类变量str. 而为什么ch[]被改变了?这是因为ch[]的引用拷贝进了函数,它指向的地址仍然是原先的地址(即存放abc的地址),但是地址里面的值被改变了(ch[0]='g',关于此类问题,请在百度搜索 JAVA参数传递 以获得更多咨询
热心网友
时间:2023-08-18 11:26
当程序调用change方法时
用实参代替形参进行操作时由于str已经初始化
所以不进行改变
而ch在执行到相同的动作时由于形参定义ch[0]='g'
所以原先的ch[0]='a'被替换
所以出现这样的结果
希望我的回答能对你有所帮助
热心网友
时间:2023-08-18 11:27
java是传引用的而不是传真正的值的!
热心网友
时间:2023-08-18 11:28
//Java中方法传参是传值的,对象型可以看作是传了那个对象的一个
//copy出来的副本,而基本数据类型则是直接将其本身扔了进去
说的容易懂点吧:
ex.change(ex.str,ex.ch);
调用方法时,我们可以这样来看:
1.String ss = ex.str;//将str的值copy了一个给ss
2.change(ss)//将ss传进change()方法中,但是str没变
这就像三胞胎去染发,大哥带着老二去,却只给老二染了,他自己却还是原来的,老三一个人进去,染好后出来,头发颜色就变了,呵呵 ,说的不是太正确,但是可以这样来看,容易懂点。