标题: int String类型传值的问题 [打印本页] 作者: 谷文仁 时间: 2013-3-20 18:32 标题: int String类型传值的问题 本帖最后由 谷文仁 于 2013-3-21 15:35 编辑
public class MapDemo3 {
public static void main(String[] args) {
int i = 66;
String s = "zhangsan";
changeInt(i);
changeString(s);
System.out.println(i);
System.out.println(s);
}
public static void changeInt(int i) {
i = 16;
}
public static void changeString(String s) {
s = "lisi";
}
}
为什么输出的是66 zhangsan 啊 ?
如果我要改变值该如何做啊?
作者: 全超 时间: 2013-3-20 19:07
public class MapDemo3 {
public static void main(String[] args) {
int i = 66;
String s = "zhangsan";
changeInt(i);
changeString(s);
System.out.println(i);//这里的i和s都是本函数中的i和s一直没有变过
System.out.println(s);//跟下面;两个方法没有关系。
}
public static void changeInt(int i) {
i = 16;//这里i并不是上面主函数中的i,
} //这里的i是局部变量,对这个i赋值并不会改变上面主函数的值
public static void changeString(String s) {
s = "lisi";//道理同上
}
}作者: 程媛媛 时间: 2013-3-20 19:30
楼上说的对,i,s是局部变量,只能在方法内有效。
如果想要修改变量的值,可以将i,s声明为静态成员变量,因为main
方法是静态方法,静态方法内不能运行非静态的变量或方法。
可以这样写:
public class Demo1 {
static int i = 66;
static String s = "zhangsan";
public static void main(String[] args) {