public
class
SendValue{
public
String str=
"6"
;
public
static
void
main(String[] args) {
SendValue sv=
new
SendValue();
sv.change(sv.str);
System.out.println(sv.str);
}
public
void
change(String str) {
str=
"10"
;
}
}
对于这道题,第一次也错了,今天记录一下
String 被final 修饰,是不可变
sv.change(sv.str) 这条语句,实际是把sv.str 的一个副本,放在里面,与SendValue.str 只是数据相同,不是同一个对象
public
void
change(String str) {
str=
"10"
;
}
这句话,实际是改变的是刚才传递过来的地址,也就是刚才那个副本,
str=
"10"
; 把刚才那个副本数据更新为“10”
参考一下这段代码,可能要更清晰
public class SendValue { public static String str = "6"; public static void main(String[] args) { SendValue sv = new SendValue(); sv.change(sv.str); System.out.println(sv.str); } public void change(String str) { str = "10"; System.out.println(SendValue.str); } }