字符串作为方法入参不能改变值,字符数组可改
仅供自己以后参考,正确性待以后考察
-
字符串作为形参传入方法无法改变其值
原因
进行的是值传递。方法外定义的是全局的str,值为hello。若使用方法对其值进行改变,即方法change中的语句str=“world”,编译器执行该语句时,会在方法中保留一个全局str的副本,不对其做任何改变。之后开辟一个空间用来存放world,并且由一个局部的str指向它。注意,此时有一个全局的str指向hello。还有一个局部的str,即方法体内的str指向world。二者指向不同,另外,方法中还有一个编译器生成的全局str的副本,指向的是hello。
由于方法没有返回值,局部的str将无法返回到方法外进行输出,而方法外的输出仍旧是全局的str即hello,所以值未改变。
另一情况
可在方法中加入输出语句system.out.println(str)用来查看局部的str值,经运行发现其值为world,但是却无法返回。想要正确修改,即将局部的str值返回给全局的str值,可加入return语句进行返回。
总结
第一种情况相当于改变传进来的形参值,所以失败;第二种情况相当于利用传进来的形参来改变全局的值,所以成功。
- 程序里的ch[0]有了改变,原因是数组进行的是引用传递,传递的应该是地址,待考察