public?class?Test?{
????String?str?=?"good";
????char[]?ch?=?{'a','b','c'};
????public?static?void?main(String[]?args){
????????Test?t?=?new?Test();
????????t.change(t.str,?t.ch);
????????System.out.print(t.str+"?and?");
????????System.out.print(t.ch);
????}
????public?void?change(String?str,char?ch[]){
????????str="test?ok";
????????ch[0]='g';
????}
}
2 回答

慕標(biāo)5263832
TA貢獻(xiàn)11條經(jīng)驗(yàn) 獲得超3個(gè)贊
String類比較特殊,創(chuàng)建對(duì)象后值不會(huì)改變,改變的只是地址的引用,那些新的string對(duì)象需要在堆中重新開辟內(nèi)存空間,所以值的本身不會(huì)變,只是引用地址發(fā)生變化而已

慕萊塢1975833
TA貢獻(xiàn)27條經(jīng)驗(yàn) 獲得超9個(gè)贊
運(yùn)行結(jié)果:good and gbc
涉及到作用域的問題,因?yàn)閠是Test的對(duì)象,t.str指向的就是是類變量也就是good,方法里面的str為局部變量,如果在方法里輸出str,就近原則則輸出test ok,因?yàn)樵诜椒ɡ锩鏇]有重新聲明ch,所以ch[0]被重新復(fù)制為g,要注意類變量是全局的,也就是你在這個(gè)類的任何地方都可以訪問
添加回答
舉報(bào)
0/150
提交
取消