程序1:
public class a
{
public string m="1234";
public void ma(string s)
{
s.replace('1','2');
s=s+"5678";
}
public static void main(string args[])
{a t=new a();
t.ma(m);
system.out.println(m);}
}程序2:
public class a
{
string m=new string("1234");
string n[]={"aaa"};
public void ma(string s,string [] aa)
{
s="bad";
aa[0]="bbb";
}
public static void main(string args[])
{a t=new a();
t.ma(t.m,t.n);
system.out.println(t.m+t.n);}
}
请问为什么程序1会出错(关于STATIC的错误)而程序2就可以正常通过呢?请帮助我
public class a
{
public string m="1234";
public void ma(string s)
{
s.replace('1','2');
s=s+"5678";
}
public static void main(string args[])
{a t=new a();
t.ma(m);
system.out.println(m);}
}程序2:
public class a
{
string m=new string("1234");
string n[]={"aaa"};
public void ma(string s,string [] aa)
{
s="bad";
aa[0]="bbb";
}
public static void main(string args[])
{a t=new a();
t.ma(t.m,t.n);
system.out.println(t.m+t.n);}
}
请问为什么程序1会出错(关于STATIC的错误)而程序2就可以正常通过呢?请帮助我
你或者在 main方法中定义m 就不会出问题了
因为道理跟main方法前面为什么加static一样的,程序运行前有static修饰的方法或变量会提前加载完成,如果里面有动态的方法就会错误,因为动态的方法得在程序运行后才会产生,也就是说你main方法产生时,ma方法还没存在,肯定就错了。而程序了则没有这个错误的情况,懂不?
出了问题,原来症结是在t.ma(m);上,谢谢大家,我懂了