import mypackage.p;
public class p1
{
public static void main(String d[])
{
p a=new p();
a.show();
System.out.println("ff");
}
}
上面正常运行!
但是:
import mypackage.p;
public class p1
{
p a=new p();
public static void main(String d[])
{
a.show();
System.out.println("ff");
}
}
为什么就不行!
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
静态方法只能调用静态变量。
----------------解决方案--------------------------------------------------------
因为main是静态的,静态方法里面只能调用静态成员变量,因为静态方法是属于类的,而一般的成员变量是属于对象的
类只有一个,而对象可以有很多个
所以,你把a声明为static的,就可以在main方法里面直接调用了
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
3Q了
那么简单的问题都要麻烦你们!
----------------解决方案--------------------------------------------------------
你的问题正是我的问题。。。谢谢了。。能加你为好友吗?我的qq是429019169
----------------解决方案--------------------------------------------------------
本人比较笨,接着往下问!
把创建对象的过程放到main方法里再调用它的方法,似乎也不能变成静态的"变量"(这里乱了).
这种创建是不是不会出现在别的静态方法里?(main方法比较特殊吗?还有什么特殊的地方?)
PS:大家的心情我可以理解,就请不要qiu我了,回答问题,谢谢了!
----------------解决方案--------------------------------------------------------
main方法也就是一个普通的静态方法而已,不同的是它是用JVM调用的,是程序的入口
在main方法里面定义的变量,放大一点说,在所有方法里面定义的变量都是局部变量,不分静态和非静态的,因为局部变量它的作用域就是这个方法的范围
把创建对象的过程放到main方法里面,再调用它的方法,这是肯定可以的,因为你生成了一个对象,然后再调用这个对象的方法.这个时候,这个对象只是局部变量,并不是静态变量,我们可以通过它去访问一些非静态变量和非静态方法,为什么我们可以访问,因为我们有对象了.以前之所以不能访问,是因为那些方法和变量都是非静态的.
----------------解决方案--------------------------------------------------------