关于引用类String传值的问题
public class Feng{
public void feng(String a){
a="123";
}
public static void main(String[] args){
Feng str=new Feng();
String a=new String("23");
str.feng(a);
System.out.println(a);
}
}
这段程序运行后,变量a的值还是23,为什么没有变成方法里面的赋值,String不是应用类型么,那么变量a应该存储的就是引用的地址存在栈中,方法里改变参数的值,变量a应该也改变啊
7
收起
正在回答 回答被采纳积分+1
1回答
imoocLovers
2018-07-11 16:01:22
a是一个局部变量,作用域是从定义开始,到main方法结束。虽然你将a作为参数传给feng这个方法进行处理,但是public void feng(String a)这里的参数a的作用域仅限方法内,所以方法执行之后,main中的a的值是没有改变的。下面是修改后的代码,同学可以运行看看结果:
public class Feng{ public String feng(String a){ a="123"; return a; } public static void main(String[] args){ Feng str=new Feng(); String a=new String("23"); a = str.feng(a); System.out.println(a); } }
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星