java 类中定义一个String变量a并赋值1,后在方法中赋值2,那在该方法中调用a时,得到的是值1还是值2?
9个回答
展开全部
看方法调用a的时候是不是已经赋值成2了,先调a再赋值就是用的1,先赋值再调a就是用的2
追问
public class Test1 {
String b =1;
String a=b;
a = 2;
System.out.println(a);
}
此时输出a的值是1,还是2 ??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方法赋值2后,a的值就是2了,但在这个方法外调用时a的值还是1。
给你个程序自己运行试试吧。
public class Test1 { //类名是Test1
public static void main(String[] args) {
String a = "1";
replace(a);
System.out.println(a);
}
public static void replace(String a){
a = "2";
System.out.println(a);
}
}
给你个程序自己运行试试吧。
public class Test1 { //类名是Test1
public static void main(String[] args) {
String a = "1";
replace(a);
System.out.println(a);
}
public static void replace(String a){
a = "2";
System.out.println(a);
}
}
追问
public class Test1 {
String b =1;
String a=b;
a = 2;
System.out.println(a);
}
此时输出a的值是1,还是2 ??我查资料,说String类型的值不会变化??
追答
此时输出的是"2“,String定义时别忘了"",String类型是引用类型,String类型的值是不可变的,
a = b,是将b内容的引用赋值给a,此时a、b指向同一内容,a = "2",是将新内容的引用赋给了a,
原来的引用被替代。
我以下面这个例子来解析吧
String a = “1”;
a = "2";
此时a的值就为2,这是因为内容2的引用赋给了a,内容1原本应该还是存在的,但a不能再访问它。然而此时的内容1没有任何引用,成为了垃圾,Java虚拟机会自动进行垃圾回收,而使内容1被删除。
这样解析明白吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在开始定义a为1,此时的a值就是1,当你在方法中把a的值赋予2的时候,这时的1已经被2覆盖了,就相当于替换掉了1,所以方法中调用的时候是2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那在该方法中调用a时 当然是2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询