问题描述
publicclassTest1{publicstaticvoidchangeStr(Stringstr){str="welcome";}publicstaticvoidmain(String[]args){Stringstr="1234";changeStr(str);System.out.println(str);}}
解决方案
解决方案二:
changStr只是修改了传入的形惨没有改变Stringstr="1234"的值
解决方案三:
你输出的str是你main函数里定义的你调用的函数没有返回值,所以输出当然是1234你的str算是个局部变量至在main函数里有效。你的changeStr里的str只是main函数给他传过去的一个形参。
解决方案四:
publicstaticvoidchangeStr(Stringstr){str="welcome";}这里只是把参数str指向了另外一个String对象了,main中的对象指向没有发生改变,所以值还是1234
解决方案五:
Stringstr="1234";changeStr(str);System.out.println(str);changeStr(str)这句传进去的是str这个变量的值而这个值是指向"1234"的引用,并没有把str这个变量的地址传进去,所以不管changeStr()这个方法里干了什么,str这个变量的值不会变即还是指向"1234"的引用
解决方案六:
引用4楼cjay124的回复:
Stringstr="1234"; changeStr(str); System.out.println(str);changeStr(str)这句传进去的是str这个变量的值而这个值是指向"1234"的引用,并没有把str这个变量的地址传进去,所以不管changeStr()这个方法里干了什么,str这个变量的值不会变即还是指向"1234"的引用
最详细!顶
解决方案七:
引用3楼chdw的回复:
publicstaticvoidchangeStr(Stringstr){ str="welcome"; }这里只是把参数str指向了另外一个String对象了,main中的对象指向没有发生改变,所以值还是1234
详细
解决方案八:
java里没有地址传递,要深刻理解。
解决方案九:
嗯,概念又加深了。
时间: 2024-09-20 06:09:46